Android系统为了优化性能会杀死不活跃的进程,这可能导致应用程序在后台运行一段时间后停止服务。为了避免这种情况发生,我们可以采取以下两种方法:
public class MyService extends Service { private static final int NOTIFICATION_ID = 1;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
Notification notification = new Notification.Builder(this)
.setContentTitle("My Service")
.setContentText("Service is running")
.setSmallIcon(R.drawable.ic_launcher)
.build();
startForeground(NOTIFICATION_ID, notification);
// your code here...
return START_STICKY;
}
}
public class MyJobService extends JobService { @Override public boolean onStartJob(JobParameters jobParameters) { // your code here... return false; }
@Override
public boolean onStopJob(JobParameters jobParameters) {
return false;
}
}
JobInfo jobInfo = new JobInfo.Builder(JOB_ID, new ComponentName(this, MyJobService.class)) .setPeriodic(15 * 60 * 1000) //设置任务间隔时间 .build();
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE); jobScheduler.schedule(jobInfo);
以上两种方法都可以避免Android应用程序在后台运行一段时间后停止服务,开发者可以依据实际情况选择合适的方法。