我最近刚刚学习并开发了一个小部件。据我所知,小部件每30-60分钟就有一次自动更新。现在我被要求将自动更新减少到5分钟。
所以我已经考虑创建另一个Service Thread
,它每隔5分钟不断运行倒数计时器,并刷新应用程序以检查是否存在任何可能的错误。这些错误实际上是ping测试结果。如果服务器关闭,我将执行Toast Message
以通知用户此服务器已关闭。
那么,我该怎么做呢?或者是否有更好的建议。请赐教。
答案 0 :(得分:1)
这可以帮助你:
好友使用TimerTask
在特定时间间隔后调用
Timer timer = new Timer();
timer.schedule(new UpdateTimeTask(),1, TimeInterval);
和
class UpdateTimeTask extends TimerTask {
public void run()
{
// code here
}
}
或者您也可以使用AlaramManager
:
像这样设置AlarmManager
:
private static final int REPEAT_TIME_IN_SECONDS = 60; //repeat every 60 seconds
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC, System.currentTimeMillis(),
REPEAT_TIME_IN_SECONDS * 1000, pendingIntent);
如果您想要在电话关闭时唤醒电话,请将AlarmManager.RTC
更改为AlarmManager.RTC_WAKEUP
。有关AlarmManager Click Here
这两个参数也意味着您的闹钟时间将为System.currentTimeMilis()
,这是UTC的时间。
答案 1 :(得分:0)
我认为最好将 runnable 与 postDelayed 一起使用,如下所示:
private Handler handler = new Handler();
private Runnable runnable = new CustomRunnable();
private class CustomRunnable implements Runnable {
public void run() {
// your logic
handler.postDelayed(runnable, REFRESH_TIME);
}
}
REFRESH_TIME - 以毫秒为单位刷新的常量。只需运行一次 handler.postDelayed(runnable,REFRESH_TIME); ,你想要的地方。