每1分钟(60 * 1000毫秒)最多10小时调用一次api

时间:2018-07-27 13:24:52

标签: android multithreading timer

我正在开发在后台运行的应用程序,需要每1分钟(60 * 1000毫秒)调用api,且不会出现任何波动。我已经尝试了Scheduler,timer和其他东西,但是它不能正常工作。例如,我的场景是在09:11:36 am(第一个api调用),09:12:36 am(第二个api调用)上调用api,依此类推,最后,最终的api调用将在11:下午20:36。我用下面的代码:

Handler minuteHandler = new Handler();
minuteHandler.postDelayed(runnable, 60000);
final Runnable runnable = new Runnable() {
@Override
public void run() {
 // your runnable code
 minuteHandler.removeCallbacks(runnable);
 minuteHandler.postDelayed(runnable, 60000);
 }
};

new Timer("threadname", true).scheduleAtFixedRate(new TimerTask() {
        @Override
        public void run() {
   // your runnable code              
        }
    }, 0,60*1000);

等, 我的问题是,有可能在android(所有操作系统版本)中实现。

2 个答案:

答案 0 :(得分:0)

尝试使用前景服务使用AlarmManager.setAlarmClock(API 21)或setExactAndAllowWhileIdle(API 23)。这是我发现在Android的Dose模式下在后台工作的唯一内容。

请注意,处理程序在您的活动暂停或停止时停止,并在恢复活动时恢复。

不确定计时器。但是,我确定当设备处于休眠状态时,它将无法在后台运行。

答案 1 :(得分:0)

您可以在api级别26之前使用service来实现,但是在api级别27上,service会被操作系统自动杀死。