要求:隔2秒执行一次,执行三次后不执行。
代码:
1 package com.bvin.android.test.handler; 2 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 6 import android.app.Activity; 7 import android.os.Bundle; 8 import android.os.Handler; 9 import android.util.Log; 10 11 public class AndroidTest_HandlerActivity extends Activity { 12 /** Called when the activity is first created. */ 13 private Handler handler = new Handler(); 14 private Runnable runnable = new Runnable(){//推送runnable,定期2s执行一次 15 16 17 18 @Override 19 public void run() { 20 // TODO Auto-generated method stub 21 Log.e("计时后", printCurTime()); 22 handler.postDelayed(runnable, 2000); 23 } 24 25 }; 26 private Runnable runRemove = new Runnable(){//移除runnable,在6s后移除 27 28 29 30 @Override 31 public void run() { 32 // TODO Auto-generated method stub 33 34 handler.removeCallbacks(runnable); 35 } 36 37 }; 38 private String printCurTime(){//获取当前时间 39 40 SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");//格式样式 41 Date date = new Date(System.currentTimeMillis());//建立当前日期 42 //format.format(date)格式化日期时间 43 return format.format(date); 44 } 45 @Override 46 public void onCreate(Bundle savedInstanceState) { 47 super.onCreate(savedInstanceState); 48 setContentView(R.layout.main); 49 Log.e("计时前", printCurTime()); 50 handler.post(runnable);//定期执行 51 handler.postDelayed(runRemove, 6000);//过6秒后执行 52 53 } 54 }
结果:
这两句前后没多大区别。
1.handler.postDelayed(runRemove, 6000)放后面。
handler.post(runnable);//定期执行 handler.postDelayed(runRemove, 6000);//过6秒后执行
2.handler.postDelayed(runRemove, 6000)放前面。
handler.postDelayed(runRemove, 6000);//过6秒后执行 handler.post(runnable);//定期执行