我有一个重大问题,
我制作一个适用于设备启动的广播接收器,所以我需要启动一项新服务来执行长时间运行,
因此,在广播接收器的onReceive()方法中,我创建了一个新的Intent并由此启动一个新服务,
现在我的问题是这个服务只在短时间内执行,一旦onRecieve()方法完成它,它也完成了,我的服务也随着Receiver进程的结束而停止。
所以我该如何做到这一点,以保持从BroadcastReceiver开始的服务流程。
答案 0 :(得分:3)
现在我的问题是这个服务只在短时间内执行,一旦onRecieve()方法完成它,它也完成了,我的服务也随着Receiver进程的结束而停止。
只有在您呼叫stopService()
或服务正在呼叫stopSelf()
时才会发生这种情况。该服务具有BroadcastReceiver
的独立生命周期。在onReceive()
结束之前,它甚至不会启动。
但是在Service中我使用了Separate Thread,但是这个线程也被停止了。
只有在您自己停止线程时才会发生这种情况。 Android不知道您创建的线程。
现在,最终,您的应用程序流程将被终止。使用正在运行的服务,这可能需要30分钟到几天,具体取决于设备的其他内容,是否使用startForeground()
等。一旦流程终止,一切都会进行离开,后台线程和所有。