android中定時器的實現學習
阿新 • • 發佈:2018-11-16
資料來自於
簡書 沿路旅程如歌蛻變
利用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);