1
我正在尝试创建一个后台服务,每隔10分钟就会调用一次,执行一个任务,并且在应用程序关闭时不会终止。为什么后台服务在应用程序关闭时停止工作?
以下是代码片段:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_location_service);
Intent intent = new Intent(this, AlarmReceiverLifeLog.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT);
AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
alarms.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 10 * 60 * 1000, pendingIntent);
}
在onCreate
,它会调用AlarmReceiverLifeLog
类每十分钟。以下是AlarmReceiverLifeLog
类的代码:
public class AlarmReceiverLifeLog extends BroadcastReceiver {
static Context context;
@Override
public void onReceive(Context context, Intent intent) {
Intent ll24Service = new Intent(context, LifeLogService.class);
context.startService(ll24Service);
}
}
public class LifeLogService extends Service {
@Override
public void onCreate() {
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return START_STICKY;
}
@Override
public void onDestroy() {
}
@Override
public void onTaskRemoved(Intent rootIntent) {
Intent restartService = new Intent(getApplicationContext(), this.getClass());
restartService.setPackage(getPackageName());
PendingIntent restartServicePI = PendingIntent.getService(getApplicationContext(), 1, restartService, PendingIntent.FLAG_ONE_SHOT);
Calendar calendar = Calendar.getInstance();
AlarmManager alarmService = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmService.set(AlarmManager.ELAPSED_REALTIME, calendar.getTimeInMillis() + 100, restartServicePI);
}
@Override
public IBinder onBind(Intent intent) {
return null;
}
}
我无法弄清楚什么我已经错过了。当我关闭应用程序时,后台服务正在死亡。
任何人都可以提出任何关于此?
你需要扩展intentservice,创建一个单独的线程来执行你的任务,然后服务将持续 – Bhargav