我有一个Android应用程序,一旦应用程序启动就会将自己绑定到远程服务。远程服务为蓝牙摄像机提供抽象,因此我们可以轻松地发送命令并从中接收事件。绑定发生在Application
本身而不是Activity
。对我来说很重要的是,只要相机连接到蓝牙处于活动状态,我的应用程序就会继续运行,这样我就可以从远程服务接收事件了。主要原因是我需要知道它是否录音,如果需要,我需要定期发送GPS坐标。
如果我在自己的应用程序中使用服务来管理它,我的应用程序是否有更好的机会不被杀?或者我的应用程序是否可以安全地被杀死,因为它仍然绑定到远程服务?当然,据我所知,如果内存要求需要它,Android系统会杀死我的应用程序,但是它会因为它已经停留了一段时间而没有做太多而杀了我的应用程序吗?
答案 0 :(得分:1)
只有在内存不足时才应删除应用程序的进程,但如果使用服务而不是空进程或后台活动,则会提高进程的重要性。您还可以使用startForeground()来降低Android停止服务的可能性。
来自http://developer.android.com/reference/android/app/Activity.html#ProcessLifecycle:
Android系统尝试尽可能长时间地保持应用程序进程,但最终需要在内存不足时删除旧进程。如“活动生命周期”中所述,关于要删除哪个进程的决定与用户与其交互的状态密切相关。通常,根据其中运行的活动,进程可以处于四种状态,按重要性顺序列在此处。系统会在用来杀死更重要的进程(第一个进程)之前杀死不太重要的进程(最后的进程)。
有时,Activity可能需要执行独立于活动生命周期本身存在的长时间运行操作。示例可以是允许您将图片上载到网站的相机应用程序。上传可能需要很长时间,应用程序应该允许用户离开正在执行的应用程序。要完成此操作,您的活动应启动上传发生的服务。这允许系统在上载期间正确地确定您的流程的优先级(考虑到它比其他非可见应用程序更重要),而与原始活动是暂停,停止还是完成无关。