Android流程生命周期&服务

时间:2014-12-13 12:33:09

标签: android android-lifecycle

在我注意到android意外终止我的应用程序之后,我一直在阅读关于进程生命周期的内容。该应用程序通常也在后台运行,但现在终止了。该应用程序侦听gps位置更新,电池状态广播,接收短信广播,运行蓝牙和TCP服务器等。所以它有很多工作要做,直到现在它已经成功。

我发现,由于RAM较低,android可能会关闭进程。我的应用程序仍在“app swap”列表中,但是当我选择它时,我注意到它实际上已重新启动,这解释了我之前无法使用tcp连接它的事实。你是否同意我的结论,还是有任何其他原因而不是可能造成这种情况的低RAM?

在阅读了一点之后,我明白我应该将整个应用程序实现为前台服务,因为只有在没有正常的活动可以杀死之后才会被杀死。但是,此时我对应用程序进行这样的改动并不是那么舒服。但是,我发现了这个:

http://developer.android.com/guide/components/processes-and-threads.html

  

重要性层次结构中有五个级别。以下列表按重要性顺序列出了不同类型的流程(第一个流程最重要,最后被杀死):

     

前景流程

     

用户当前正在执行的操作所需的过程。如果满足以下任一条件,则认为进程处于前台:

     

- 它托管用户正在与之交互的Activity(已调用Activity的onResume()方法)。

     

- 托管与用户正在与之交互的活动绑定的服务。

     

- 托管一个“在前台”运行的服务 - 该服务调用了startForeground()。

     

- 托管正在执行其生命周期回调之一的服务(onCreate(),onStart()或onDestroy())。

     

- 它主持一个正在执行其onReceive()方法的BroadcastReceiver。

如果我的粗体条件错误,请更正。这不是说我可以让我的应用程序托管虚拟前台服务,之后运行我的应用程序和虚拟服务的进程将被视为前台进程,这再次意味着它将与Android杀死我的应用程序非常不同??这样我就不必完成我的应用程序的所有功能,并弄清楚如何让它们作为服务工作。

谢谢!

0 个答案:

没有答案