DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: hcwong1993
今日帖子: 37
在线用户: 19
导航: 论坛 -> 移动应用开发 斑竹:flyers,iamdream  
作者:
男 changfenglee (葫芦老四) ★☆☆☆☆ -
普通会员
2024/1/20 14:52:25
标题:
关于安卓三层架构连接问题 浏览:1263
加入我的收藏
楼主: 刚开始接触安卓开发,现在面临问题像大家求教:

现在条件:安卓连接数据库是静态连接

问题如下:

1.问题一:当打开APP时可以正常使用,但当手机锁屏或待机以后,就提示Socket Error了
2.问题二:我保存数据与图片返回到ListView的清单后,再点就闪退,如果回到清单刷新一下就会好点

这上面的问题不清楚是什么原因,感觉像是连接方面的问题,但对这个研究不多,有哪位高手朋友可以解惑吗,小弟在此感谢
----------------------------------------------
【个人签名】:玩了多年DELPHI,终于从菜鸟升级成老菜鸟
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2024/1/20 15:28:14
1楼: 1、可用中间件,如datasnap和rtc。要连接使用短连接,即请求数据时连接,请求完毕后断开。
2、闪退原因很复杂,如果是delphi11以上版本,应该是自己处理数据有问题导致的。建议使用流获取服务器的图形数据。
----------------------------------------------
-
作者:
男 changfenglee (葫芦老四) ★☆☆☆☆ -
普通会员
2024/1/20 16:47:05
2楼: 目前图片的存储我是使用的流存储,存储功能也没有问题,就是有时会闪退,让我很郁闷

至于短连接的方式我可以试一下看看
----------------------------------------------
【个人签名】:玩了多年DELPHI,终于从菜鸟升级成老菜鸟
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/1/21 21:29:02
3楼: 闪退的原因,通常有两种:
1. 你的程序有内存泄漏;或者有异常没有处理。该加 try.. except ... end 的地方没有加上。

2. 保存图片,而且你又是直接连接数据库,我猜你也没有用什么线程,多半就是主线程在驱动图片保存数据库的操作。这种情况下,如果图片比较大,因为对数据库的操作肯定是阻塞操作,因此图片保存到数据库就比较耗时。这个在 Windows 底下没有问题,对于耗时的操作,大不了就是界面上有个来回倒转的时钟图标提示用户等待,这个时候界面被冻结用户无法操作,只要有那个提示图标在转,就没问题。但是在安卓底下,你的主线程较长时间被冻结,系统就会把 APP 杀死,表现为闪退。

因此,先不说直连数据库是否合理。总的来说就是你需要用异步去执行这种耗时的操作(所谓异步,其实就是把这种操作放到一个线程里面去)。
----------------------------------------------
-
作者:
男 changfenglee (葫芦老四) ★☆☆☆☆ -
普通会员
2024/1/22 16:28:58
4楼: 下面这个手机截屏能说明问题,我在手机屏幕上下滑就会刷新数据,视频中可以看见,我滑一下正常刷新数据,再滑一下显示Socket Error,如此不断的反复,就会出会好一次,坏一次的循环

这怀疑还是DataSnap的连接问题,但不知道问题出在哪里

因为这个网站没办法上传MP4类型,我压缩了一下
此帖子包含附件:changfenglee_2024122162856.zip 大小:1.37M
----------------------------------------------
【个人签名】:玩了多年DELPHI,终于从菜鸟升级成老菜鸟
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2024/1/23 15:37:59
5楼: 这个不用去怀疑。你要是怀疑,你自己用一个按钮,点了按钮,获取数据。连续点,看看会出什么情况。并且可以加上断点或者 log 去看看究竟情况是怎么回事。

你是在安卓里面直接使用 FireDAC 连接的数据库服务器?

还是使用了 DataSnap 连接的是 DataSnap 服务器,然后 DataSnap 服务器去连接的数据库?你的问题描述里面,似乎没把这个事情说清楚。如果是后者,问题还不一定是出在安卓这边,可能是出在 DataSnap 服务器端连接数据库那里。

另外,这种情况,从实际写程序来说,不要使用长连接。每次需要获取数据,才去建立连接,数据取完,断开连接。这样才是合理的操作。
----------------------------------------------
-
作者:
男 changfenglee (葫芦老四) ★☆☆☆☆ -
普通会员
2024/1/25 8:25:59
6楼: 是的,我现在改成了短连接,每次获取数据再连接,这样的问题暂时解决了,缺点是反应速度变慢了点
----------------------------------------------
【个人签名】:玩了多年DELPHI,终于从菜鸟升级成老菜鸟
作者:
男 kwer (★★★★★) ★☆☆☆☆ -
普通会员
2024/1/25 10:44:13
7楼: 同6楼,,,长短结合方案,如果Socket闲停超过多少秒,客户端要主动挂断。
----------------------------------------------
==========-==========-==========-==========-==========
     多隆, 给我备一匹最快的马, 我有事要走先~~~
==========-==========-==========-==========-==========
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行140.625毫秒 RSS