当我不需要进程间通信时,Android服务是否有用?

时间:2011-11-29 12:02:07

标签: android service

似乎当我不需要进程间通信时,几乎没有理由使用服务。我所知道的唯一原因是:如果我的进程有一个已启动的服务,则该进程不太可能被杀死。

我可以使用带有dontWantToBeKilled()和canBeKilled()方法的实用程序类,它将启动/停止虚拟服务。除此之外,我不会使用服务。这是对的吗?

3 个答案:

答案 0 :(得分:1)

是的,还有其他原因。

您的应用程序在一个进程中运行,只要它需要更多资源就可以被系统杀死。

根据this,正在运行的服务的优先级高于不在前台的Activity,这意味着系统更有可能杀死在后台具有Activity的应用程序进程,而不是有一个服务在后台运行。

服务文档声明:

  

If the service has been started, then its hosting process is considered to be less important than any processes that are currently visible to the user on-screen, but more important than any process not visible. Because only a few processes are generally visible to the user, this means that the service should not be killed except in extreme low memory conditions.

因此,您可以使用服务来降低应用程序进程被杀的可能性。

答案 1 :(得分:0)

即使Service在与Activity相同的过程中运行,也无法保证您的Activity不会被杀死。

来自Processes and Threads

  

例如,将图片上传到网站的活动   应该启动服务来执行上传,以便上传即可   即使用户离开活动,也会在后台继续。运用   服务保证操作至少具有“服务”   处理“优先级,无论活动发生什么。这是   广播接收机应该使用服务的原因相同   而不是简单地将耗时的操作放在一个线程中。

结论: 如果你想做一个需要一段时间的后台操作而且重要的是它正确完成,请使用Service

答案 2 :(得分:0)

如果一个进程开始服务那么没有必要,进程可能会被杀死。实际上进程仍然存在或者不会影响服务。作为完全后台进程。可能是你已经开始进程的情况刚开始服务。所以流程和服务不能相互关联。

AFAIK我没有正确地提出你的最终问题。