我需要实现一项接受少量数据的服务,并且应该继续工作,直到用户明确停止它为止。当一天完成时,它应该显示一种通知,是否继续进行。我已编码,但在测试时,我注意到它在几分钟后停了好几次。如果再次重新启动,则发生null异常。请提出任何建议。
答案 0 :(得分:1)
如果您希望服务永久运行,直到用户明确停止,
将服务作为粘性服务:
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return Service.START_STICKY;
}
添加广播接收器(清单)以侦听ON_BOOT_COMPLETE事件并在onReceive()方法中启动服务。
<application>
<receiver android:name=".BootCompletedReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
</intent-filter>
</receiver>
</application>
添加权限android.permission.RECEIVE_BOOT_COMPLETED
通过这些更改,您的服务应该永远运行。
答案 1 :(得分:0)
Android OS可以停止任何Android服务或应用程序来回收资源。你只能建议不要这样做。
最可靠的方法是让您的服务在Foreground中运行,标记为Sticky。但即便是那些也不能保证它会一直运行。系统重启会终止您的服务。
答案 2 :(得分:0)
更好地在单独的进程中启动您的服务或者使用前台服务android.foreground服务也停止在极低的内存问题“使用START_STICKY”重启