|
|
导航: |
论坛 -> 移动应用开发
斑竹:flyers,iamdream |
|
作者: |
|
2024/1/20 14:52:25 |
标题: |
|
加入我的收藏 |
楼主: |
刚开始接触安卓开发,现在面临问题像大家求教:
现在条件:安卓连接数据库是静态连接
问题如下:
1.问题一:当打开APP时可以正常使用,但当手机锁屏或待机以后,就提示Socket Error了 2.问题二:我保存数据与图片返回到ListView的清单后,再点就闪退,如果回到清单刷新一下就会好点
这上面的问题不清楚是什么原因,感觉像是连接方面的问题,但对这个研究不多,有哪位高手朋友可以解惑吗,小弟在此感谢
----------------------------------------------
【个人签名】:玩了多年DELPHI,终于从菜鸟升级成老菜鸟 |
作者: |
|
2024/1/20 15:28:14 |
1楼: |
1、可用中间件,如datasnap和rtc。要连接使用短连接,即请求数据时连接,请求完毕后断开。 2、闪退原因很复杂,如果是delphi11以上版本,应该是自己处理数据有问题导致的。建议使用流获取服务器的图形数据。
----------------------------------------------
-
|
作者: |
|
2024/1/20 16:47:05 |
2楼: |
目前图片的存储我是使用的流存储,存储功能也没有问题,就是有时会闪退,让我很郁闷
至于短连接的方式我可以试一下看看
----------------------------------------------
【个人签名】:玩了多年DELPHI,终于从菜鸟升级成老菜鸟
|
作者: |
|
2024/1/21 21:29:02 |
3楼: |
闪退的原因,通常有两种: 1. 你的程序有内存泄漏;或者有异常没有处理。该加 try.. except ... end 的地方没有加上。
2. 保存图片,而且你又是直接连接数据库,我猜你也没有用什么线程,多半就是主线程在驱动图片保存数据库的操作。这种情况下,如果图片比较大,因为对数据库的操作肯定是阻塞操作,因此图片保存到数据库就比较耗时。这个在 Windows 底下没有问题,对于耗时的操作,大不了就是界面上有个来回倒转的时钟图标提示用户等待,这个时候界面被冻结用户无法操作,只要有那个提示图标在转,就没问题。但是在安卓底下,你的主线程较长时间被冻结,系统就会把 APP 杀死,表现为闪退。
因此,先不说直连数据库是否合理。总的来说就是你需要用异步去执行这种耗时的操作(所谓异步,其实就是把这种操作放到一个线程里面去)。
----------------------------------------------
-
|
作者: |
|
2024/1/22 16:28:58 |
4楼: |
下面这个手机截屏能说明问题,我在手机屏幕上下滑就会刷新数据,视频中可以看见,我滑一下正常刷新数据,再滑一下显示Socket Error,如此不断的反复,就会出会好一次,坏一次的循环
这怀疑还是DataSnap的连接问题,但不知道问题出在哪里
因为这个网站没办法上传MP4类型,我压缩了一下
----------------------------------------------
【个人签名】:玩了多年DELPHI,终于从菜鸟升级成老菜鸟
|
作者: |
|
2024/1/23 15:37:59 |
5楼: |
这个不用去怀疑。你要是怀疑,你自己用一个按钮,点了按钮,获取数据。连续点,看看会出什么情况。并且可以加上断点或者 log 去看看究竟情况是怎么回事。
你是在安卓里面直接使用 FireDAC 连接的数据库服务器?
还是使用了 DataSnap 连接的是 DataSnap 服务器,然后 DataSnap 服务器去连接的数据库?你的问题描述里面,似乎没把这个事情说清楚。如果是后者,问题还不一定是出在安卓这边,可能是出在 DataSnap 服务器端连接数据库那里。
另外,这种情况,从实际写程序来说,不要使用长连接。每次需要获取数据,才去建立连接,数据取完,断开连接。这样才是合理的操作。
----------------------------------------------
-
|
作者: |
|
2024/1/25 8:25:59 |
6楼: |
是的,我现在改成了短连接,每次获取数据再连接,这样的问题暂时解决了,缺点是反应速度变慢了点
----------------------------------------------
【个人签名】:玩了多年DELPHI,终于从菜鸟升级成老菜鸟
|
作者: |
kwer (★★★★★) |
★☆☆☆☆ |
-
|
普通会员 |
|
2024/1/25 10:44:13 |
7楼: |
同6楼,,,长短结合方案,如果Socket闲停超过多少秒,客户端要主动挂断。
----------------------------------------------
==========-==========-==========-==========-========== 多隆, 给我备一匹最快的马, 我有事要走先~~~ ==========-==========-==========-==========-==========
|
|