即使应用关闭,倒数计时器如何继续运行?

时间:2019-09-23 05:30:28

标签: android countdowntimer

我想使用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
    }
};

3 个答案:

答案 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?

希望有帮助。

相关问题