我想使用countdowntimer禁用任务1个小时。但是当应用关闭时,倒数计时器将停止工作
我已经尝试过Intent服务,但似乎无法正常工作
final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1);
Context mContext;
public IBinder onBind(Intent intent) {
return null;
}
public void onCreate() {
super.onCreate();
mContext = this;
startService();
}
private void startService() {
scheduler.scheduleAtFixedRate(runner, 0, 30, TimeUnit.SECONDS);
}
final Runnable runner = new Runnable() {
public void run() {
mHandler.sendEmptyMessage(1212);
Toast.makeText(mContext, "TImer is out", Toast.LENGTH_SHORT).show();
}
};
public void onDestroy() {
super.onDestroy();
Toast.makeText(this, "Service Stopped ...", Toast.LENGTH_SHORT).show();
}
private final Handler mHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
//do what ever you want as 3hrs is completed
}
};
答案 0 :(得分:1)
您可以使用AlarmManager
来执行应用生命周期之外的任务。设置闹钟时间时,只需计算1小时后的时间,然后为该时间设置闹钟即可。您可以在此处查看文档:{{3}}
答案 1 :(得分:0)
您可以像这样使用JobScheduler:
private static final int JOB_ID=1;
JobScheduler mJobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
JobInfo.Builder builder = new JobInfo.Builder(JOB_ID, new ComponentName(getPackageName(),SchedulerService.class.getName()));
builder.setMinimumLatency(60 * 60 * 1000);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_ANY);
mJobScheduler.schedule(builder.build());
SchedulerService是您的计划服务
public class SchedulerService extends JobService {
private static final String TAG = "SchedulerService";
@Override
public boolean onStartJob(JobParameters params) {
// resume your work
return false;
}
@Override
public boolean onStopJob(JobParameters params) {
return false;
}}
答案 2 :(得分:-1)
您可以使用扩展Service的BroadcastService类,即使App被销毁,该类也可以使用
您可以在此处找到解决方案:
How to keep a CountDownTimer running even if the app is closed?
希望有帮助。