资料来自于
简书 沿路旅程如歌蜕变
利用handler.postDelay()方法来实现定时器计时
下面的代码实现了6s倒计时,计时后,自动停止计时并移除runnable.
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
private CountDownTimer mTimer;
private int time=6;
private TextView textView;
private Handler handler=new Handler();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView=findViewById(R.id.text);
initHandler();
}
private void initHandler() {
Runnable runnable=new Runnable() {
@Override
public void run() {
Log.i(TAG, "run: time="+time);
if (time!=0){
handler.postDelayed(this,1000);
time--;
textView.setText(String.valueOf(time));
}else {
handler.removeCallbacks(this);
}
}
};
handler.post(runnable);
}
@Override
protected void onDestroy() {
handler.removeCallbacksAndMessages(null);
super.onDestroy();
}
}
对handler线程的管理,启动和销毁
线程的启动和销毁(防止内存泄漏)
//正常启动
handler.post(runnable);
//延时1000ms启动
handler.postDelayed(runnable,1000);
//销毁指定线程
handler.removeCallbacks(runnable);
//清空所有消息和线程
handler.removeCallbacksAndMessages(null);