我在android中使用服务来完成某些任务,我希望每次都能运行我的服务。
但是当我清除Android手机的内存时,我的服务被杀死而没有重启。
我已经阅读了几篇文章,建议START_STICKY
将解决问题但不会发生。
以下是我在服务中的onStartCommand
代码,我在其中返回START_STICKY
。在这种情况下,即使onDestroy
也没有被调用。
public int onStartCommand(Intent intent, int flags, int start_Id) {
return START_STICKY;
}
答案 0 :(得分:0)
尝试使用此功能在强制停止后重新启动服务。
注意:如果您还要从其他地方停止此服务,那么它也会再次重新启动服务,因此您必须检查此功能,即停止服务或强行停止服务。 如果您自己停止服务,请在共享首选项中保存服务状态停止类型[非强制],并使用该状态检查不再启动它。
@Override
public void onTaskRemoved(Intent rootIntent){
Intent restartServiceIntent = new Intent(getApplicationContext(), this.getClass());
restartServiceIntent.setPackage(getPackageName());
PendingIntent restartServicePendingIntent = PendingIntent.getService(getApplicationContext(), 1, restartServiceIntent, PendingIntent.FLAG_ONE_SHOT);
AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmService.set(
AlarmManager.ELAPSED_REALTIME,
SystemClock.elapsedRealtime() + 5000,
restartServicePendingIntent);
super.onTaskRemoved(rootIntent);
}