2012-10-20 44 views
0

我写了一个注册Smsreciever的服务,并始终在后台工作。 另外,我想阻止我的主要活动在不使用该程序的背景下工作。一般来说它是工作,但有时我的活动开始,并在收到短信后后台运行,它会导致电池消耗,我怎么能防止Android阻止在后台工作

public void onCreate() 
{ 
    ... 

    startService(new Intent(this,ServiceCommunicator.class)); 

    ... 
}    

public void onBackPressed() { 

    super.onBackPressed(); 
    android.os.Process.killProcess(android.os.Process.myPid()) ; 

     } 

回答

0

一些有关你在做什么注意事项:

  1. 它不建议杀死你的程序。让服务继续下去。当你调用“startService”时,即使在活动结束后,它也应该继续。

  2. 根据定义,后台服务可以在系统认为需要内存时死亡。如果你不想错过短信活动,让你的服务在前台运行。

  3. 你的服务使用的CPU和电池越多,操作系统决定杀死它的机会就越多。服务应该尽可能的简洁,如果他们长期做很多工作,他们应该处于前台。

  4. 如果您的活动使用了大量的CPU,则在关闭应用程序时您的服务可能也会关闭,因为它们都属于同一进程。您可以通过清单更改服务的流程。

+0

谢谢,我改变了这种方式。但我想知道,当我杀死我的过程时,它会关闭所有的东西而不使用电池。我完成所有活动后是否一样? – user1685802

+0

当你杀死你的进程时,它会包含你应用的所有内容,包括服务(除非你已经设置它们属于不同的进程)。然而,为了知道为什么你的应用使用了很多CPU /电池,我们需要看到一些代码......当你完成活动时,它们处于停止状态。除非你在代码中做了一些奇怪的事情,否则他们不会使用CPU。 –