android中的定時器
阿新 • • 發佈:2019-01-25
Thread的sleep(long)方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
new Thread(runnable).start();
}
private int looper = 0;
Runnable runnable = new Runnable() {
@Override
public void run() {
while (true){
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
Log.d("ThreadAct", ++looper + "");
}
}
};
@Override
protected void onDestroy() {
super.onDestroy();
runnable = null;
}
Handler的postDelayed(Runnable, long)方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
Log.d("HandlerAct" ,"Thread.name:"+Thread.currentThread().getName());
runHandler.postDelayed(runnable,2000);
}
private Handler runHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
}
};
private int looper = 0;
Runnable runnable = new Runnable(){
@Override
public void run() {
//TODO something
Log.d("HandlerAct",++looper+"");
Log.d("HandlerAct","Thread.name:"+Thread.currentThread().getName());
runHandler.postDelayed(this,2000);
}
};
@Override
protected void onDestroy() {
super.onDestroy();
runHandler.removeCallbacks(runnable);//停止
}
Timer與TimerTask結合的方法
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
timer.schedule(task,1000,2000);
}
private int looper = 0;
Timer timer = new Timer( );
TimerTask task = new TimerTask( ) {
public void run ( ) {
timerHandler.sendEmptyMessage(0);
}
};
Handler timerHandler = new Handler( ) {
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d("TimerAct",++looper+"");
}
};
protected void onDestroy ( ) {
if (timer != null) {
timer.cancel( );
timer = null;
}
super.onDestroy( );
}
使用schedule
方法,1秒後呼叫此task
物件,然後每2秒執行一次
timer.schedule(task,1000,2000);
ScheduledThreadPoolExecutor
利用ScheduledThreadPoolExecutor定時執行任務:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
threadPool.scheduleAtFixedRate(task,0,2, TimeUnit.SECONDS);
}
private ScheduledThreadPoolExecutor threadPool = new ScheduledThreadPoolExecutor(5);
private int looper = 0;
TimerTask task = new TimerTask( ) {
public void run ( ) {
timerHandler.sendEmptyMessage(0);
}
};
final Handler timerHandler = new Handler( ) {
public void handleMessage(Message msg) {
super.handleMessage(msg);
Log.d("ExecutorAct",++looper+"");
}
};
CountDownTimer倒計時
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
timer.start();
}
private int looper = 0;
private CountDownTimer timer = new CountDownTimer(10000, 1000) {
@Override
public void onTick(long millisUntilFinished) {
Log.d("CountdownTimerAct",++looper+"");
}
@Override
public void onFinish() {
Log.d("CountdownTimerAct","onFinish");
Log.d("CountdownTimerAct",++looper+"");
}
};