我最近刚刚学习并开发了一个小部件。我了解该小部件至少每 30 至 60 分钟自动更新一次。现在我被要求将自动更新时间缩短到 5 分钟。
因此,我想创建另一个Service Thread
每 5 分钟不断运行倒数计时器并刷新应用程序以检查任何可能的错误的应用程序。这些错误实际上是 ping 测试结果。如果服务器宕机,我会执行一个Toast Message
通知用户该服务器宕机。
那么,我该怎么做呢?或者有没有更好的建议。请赐教。
我最近刚刚学习并开发了一个小部件。我了解该小部件至少每 30 至 60 分钟自动更新一次。现在我被要求将自动更新时间缩短到 5 分钟。
因此,我想创建另一个Service Thread
每 5 分钟不断运行倒数计时器并刷新应用程序以检查任何可能的错误的应用程序。这些错误实际上是 ping 测试结果。如果服务器宕机,我会执行一个Toast Message
通知用户该服务器宕机。
那么,我该怎么做呢?或者有没有更好的建议。请赐教。
希望这可以帮助您:
好友用于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点击这里
这两个参数也意味着您的闹钟时间将是System.currentTimeMilis()
UTC 时间。
我认为最好将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); 你想在哪里。