保持从广播接收器开始的服务活动

时间:2011-10-06 05:21:50

标签: android

我有一个重大问题,

我制作一个适用于设备启动的广播接收器,所以我需要启动一项新服务来执行长时间运行,

因此,在广播接收器的onReceive()方法中,我创建了一个新的Intent并由此启动一个新服务,

现在我的问题是这个服务只在短时间内执行,一旦onRecieve()方法完成它,它也完成了,我的服务也随着Receiver进程的结束而停止。

所以我该如何做到这一点,以保持从BroadcastReceiver开始的服务流程。

1 个答案:

答案 0 :(得分:3)

  

现在我的问题是这个服务只在短时间内执行,一旦onRecieve()方法完成它,它也完成了,我的服务也随着Receiver进程的结束而停止。

只有在您呼叫stopService()或服务正在呼叫stopSelf()时才会发生这种情况。该服务具有BroadcastReceiver的独立生命周期。在onReceive()结束之前,它甚至不会启动

  

但是在Service中我使用了Separate Thread,但是这个线程也被停止了。

只有在您自己停止线程时才会发生这种情况。 Android不知道您创建的线程。

现在,最终,您的应用程序流程将被终止。使用正在运行的服务,这可能需要30分钟到几天,具体取决于设备的其他内容,是否使用startForeground()等。一旦流程终止,一切都会进行离开,后台线程和所有。