Android 应用程序可以使用 android.os.Handler 和 java.lang.Runnable 类运行周期性计时器。如下所示的简单示例。
要点
1. 扩展android.app.Service 的服务类应该实现onBind、onCreate & onDestroy、生命周期方法。2.periodicTask 是Runnable 实现的一个实例,它运行一个线程。执行 run() 将打印消息“Awake”。3. mHandler是Handler的一个实例,附加在periodicTask线程上。4. 通过 postDelayed 通知 Handler 每分钟执行一次线程。5. 当服务被销毁时,通过调用removeCallbacks 从Handler 中移除periodicTask 实例。
示例代码
public class PeriodicTimerService extends Service {
private Handler mHandler = new Handler();
public static final int ONE_DAY = 86400000;
private Runnable periodicTask = new Runnable() {
public void run() {
Log.v("PeriodicTimerService","Awake");
mHandler.postDelayed(periodicTask, ONE_DAY );
}
};
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
mHandler.postDelayed(periodicTask, ONE_DAY );
}
@Override
public void onDestroy() {
super.onDestroy();
mHandler.removeCallbacks(periodicTask);
Toast.makeText(this, "Service onDestroy() ", Toast.LENGTH_LONG).show();
}
}