我成功地使用了一项服务来在前台执行某些任务。现在,要在后台执行此操作,我将删除handler.removeCallbacks
中的onDestroy()
方法。
但这也会阻止我使用stopService(intent)
停止服务。
我在官方文档中看到应该 使用JobScheduler(因为我的目标是API 28)。
以下是我的代码的更精确的说明:
public class MainActivity {
private Intent intent;
onCreate() {
if (intent == null) {
intent = new Intent(this, MyService.class);
}
}
startService(intent);
... // Then is some code to stop the service if needed with stopService(intent)
}
--------------------------------------------------------------
public class myService {
private Handler handler = null;
private static Runnable runnable = null;
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
handler = new Handler();
runnable = new Runnable() {
@Override
public void run() {
System.out.println("Running service times " + i);
i++;
handler.postDelayed(runnable, 1000);
}
};
handler.post(runnable);
}
@Override
public void onDestroy() {
handler.removeCallbacks(runnable);
super.onDestroy();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
return super.onStartCommand(intent, flags, startId);
}
我希望它在后台运行(即使设备已锁定),但仍然能够禁用该服务(或JobScheduler?)。
您有什么建议?
答案 0 :(得分:1)