我有我的android应用程序,我怀疑另一个应用程序在运行时会杀死我所有的线程,这给我带来了很多问题。
有一些问题:
1-另一个应用程序可以做到这一点?我的意思是,当应用程序在屏幕上运行时,这会杀死在后台运行的另一个线程吗?
2-如果发生这种情况,我可以做些什么来防止这种情况发生吗?或者检测是否真的发生(杀死线程)?
谢谢!
PS:对不起我的英语不好
Rodrigo,因为您通过电子邮件告诉我您的应用程序没有包含在服务中。这是你应该开始的第一个地方。
将您的代码包装在服务中(这将确保如果系统资源不足,它不会是第一个被杀死的东西)
但是仍然使用您的服务内部的另一个线程(这样您的主线程就不会被阻塞)。
向系统声明您的服务在前台(即使它在后台)。
前台服务是一种被认为是用户主动意识到的服务,因此不会在内存不足时被系统杀死。前台服务必须为状态栏提供通知,该通知位于“正在进行”标题下,这意味着除非服务停止或从前台删除,否则无法解除通知。
例如,播放来自服务的音乐的音乐播放器应设置为在前台运行,因为用户明确知道其操作。状态栏中的通知可能会指示当前歌曲并允许用户启动活动以与音乐播放器进行交互。
将尽可能多的功能放在云中。例如,您的应用程序不是每 10 秒轮询一次 Web 服务器以获取传入的客户请求。让 GCM (Google Cloud Messaging) ping 电话,或让网站向您的应用发送 SMS,告诉它从服务器获取新请求。由于您的应用程序将使用广播接收器,因此它不需要在后台运行太多。
学习使用报警管理器。如果由于某种原因它被杀死,这将重新启动您的服务。
尽可能避免发送 gps 更新,当汽车没有移动时,或者当司机休息、吃午饭时,或者只在手机插入车载充电器时发送更新。等等。有一些框架旨在最大限度地减少 gps 天线和数据计划的使用。尽可能地利用这些。
如果数据连接不可靠。在您到达连接更好的地方之前,请避免使用 gps 天线。使用 gps 会消耗大量电力。它甚至可以让你的手机真的很热。无论您做什么,都尽量避免为 GPS 天线供电。从技术上讲,您甚至可以发送短信来更新服务器上的汽车坐标(假设客户有无限的短信/短信计划)。