2012-02-02 246 views
0

我需要制作一个应用程序,该应用程序将在后台永久运行,并且如果需要,它将打开用户UI的活动。我做了一个活动,这是它在onCreate上所做的主要活动是调用startService(new Intent(this,MainService.class)); 问题是在调用服务的onStart命令之后,MainService类变为null并且它停止运行。永远运行的Android后台服务

我需要以不同的方式启动服务吗?我应该为服务启动一个新线程吗?

感谢, 那鸿

回答

3

如果你想继续你的服务运行,虽然应用gt gt close.then你需要返回STICKY那样。并且还需要使用BroadcastReciever。并且您的服务将不会继续运行,因为如果系统需要释放内存,那么它会终止,但是您可以肯定地重新启动服务。所以我会建议你阅读整个文档和服务内容ServiceBroadcast 它可能对你有帮助。还有一件事情是有哪些进程会首先被系统杀死,等等。

+1

谢谢,如果BroadReciever不是服务,将如何它在后台运行?据我所知,一个应用程序总是从一个活动开始。一旦应用正在监听事件,我想退出主要活动。 – nmnir 2012-02-02 17:58:34

-5

如果你希望你的服务一直运行下去,你的代码需要能够永远运行过

onStartCommand { 
    while (1) { 
     .. 
     .. 
      //call your activity? 
     .. 
     .. 
    } 
} 
+2

谢谢。该服务应等待系统事件(如WiFi连接)。我应该还是做一段时间循环或者只是注册事件kip服务runnig? – nmnir 2012-02-02 09:10:16

+1

史密斯下面说的。如果您正在监听系统事件,请查看Intents和BroadcastReceivers。当连接WIFI时发送什么意图,并使用BroadcastReceiver来监听意图。你不需要这个服务 – 2012-02-02 09:15:09

+0

onStart()应该返回START_STICKY,所以如果有一个while(1)循环,它将不会返回。可以吗? – nmnir 2012-02-02 10:13:26

1

你需要做一个新的线程在你的服务和启动此服务使用命令startForeground

+0

我想要两个服务是'onForground'。我怎样才能做到这一点? http://stackoverflow.com/questions/35168209/are-their-any-negatives-impacts-of-launching-two-continues-services-at-the-same – 2016-02-03 04:39:26