停止关闭Android应用程序
问题描述:
我正在使用BroadcastReceiver与我的应用程序接收SMS消息,然后根据消息的内容编辑数据库。该应用程序在打开时工作正常,但如果我长时间保持开启状态,它会自动关闭应用程序,它会在收到消息时强制关闭(我认为BroadcastReciever仍在工作,但应用程序的其余部分关闭)。有没有办法阻止应用程序关闭,或在收到短信时恢复它?停止关闭Android应用程序
感谢
答
如果你想接收器是持久的,你应该考虑使用Service
而不是标准Activity
为您的应用。存在于标准活动中的BroadcastReceiver
被认为是前台服务只有当处理onReceive
只要执行返回Activity
恢复其正常进程优先级并且可以由系统根据需要终止。
流程生命周期
当前正在执行一个BroadcastReceiver(即,当前运行在其的onReceive(上下文代码,意图)方法)的方法,被认为是作为一个前台进程,除非存在极大的内存压力,否则系统将继续运行。
从onReceive()返回后,BroadcastReceiver不再处于活动状态,其宿主进程与其中运行的任何其他应用程序组件一样重要。这一点尤其重要,因为如果该进程仅托管BroadcastReceiver(用户从未或最近未与之交互过的应用程序的常见情况),那么在从onReceive()返回时,系统将认为其进程是空的并积极地杀死它使资源可用于其他更重要的流程。
这意味着,对于长时间运行的操作,你会经常一起使用的服务以及广播接收器,以保持包含过程积极为您的操作的全部时间。
有关创建服务的详细信息:
的开发者指南
有关如何创建服务,请阅读Services developer guide的详细讨论。
为了将其转化为服务做我只需要更改“活动”到XML文件中的“服务”? – 2012-04-11 23:06:31
@TrentWalls不,我使用Android文档的Services页面中的链接更新了我的答案,该链接中有一些关于创建服务的信息和指南。应该指出的是,服务和活动是基本上不同的功能单元。 – 2012-04-11 23:09:41