我有一个BroadcastReceiver服务,它通过“exampleMethod()”方法与活动进行通信。此服务启动并正常工作,但一段时间后它被Android停止,我必须重新启动它。是否可以确保服务长时间不停止?
public class SMS_Service extends Service{
private BroadcastReceiver rec_sms = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
MainActivity.exampleMethod();
}
};
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// We want this service to continue running until it is explicitly
// stopped, so return sticky.
return START_STICKY;
}
答案 0 :(得分:2)
一段时间后,Android停止服务
首先重要的是为什么你的服务被android系统停止,
当用户直接与该进程的组件(即活动)进行交互时,Android会非常努力地保持该进程的运行,除非在特殊情况下,否则您不会看到它被杀死。
如果是由于内存不足,则无法完成任何操作。当为内存杀死某些内容时,整个进程(包括应用程序对象)将被终止并且此时不会执行代码。
如果服务刚刚被销毁,因为它不再需要运行,它的onDestroy()将被调用,当稍后需要服务时,会创建一个新实例并调用onCreate()。
是否可以确保服务长时间不停止 时间?
这是不可能的。你可以得到的最接近的是通过startForeground(),但即使这样也不能保证你的服务永远存在。
此外,这是Android中严重的反模式。用户讨厌试图永远运行的应用程序,这就是我们必须与任务杀手等竞争的原因。