我们在开发中时常需要写一些定时的任务,比如每5秒执行一次。大家可能回想到Timer,但是使用中Timer又时常发生泄漏问题。这里我在网上找到一种可靠方案供大家选择。
代码如下
private Handler mHandler;
private void function(){
mHandler = new Handler();
Runnable r = new Runnable() {
@Override
public void run() {
//每隔10分钟循环执行run方法
if (mHandler != null) {
//TODO 执行我们需要定时执行的代码,每两秒执行一次
mHandler.postDelayed(this, 2 * 1000);
}
}
};
//主线程中调用:
mHandler.postDelayed(r, 100);//延时100毫秒
}
大家注意,这里TODO的地方是我们要定时执行的代码。我们可以在onDestroy中对Handler执行销毁,也可以做标记,如下
private Handler mHandler;
private boolean flag = true;
private void function(){
mHandler = new Handler();
Runnable r = new Runnable() {
@Override
public void run() {
//每隔10分钟循环执行run方法
if (flag && mHandler != null) {
//TODO 执行我们需要定时执行的代码,每两秒执行一次
mHandler.postDelayed(this, 2 * 1000);
}
}
};
//主线程中调用:
mHandler.postDelayed(r, 100);//延时100毫秒
}
@Override
protected void onDestroy() {
super.onDestroy();
flag = false;
}