android的timertask,Android 中 Timer 和 TimerTask的使用
Android中Timer是一個普通的類,其中有幾個重要的方法;而TimerTask則是一個抽象類,其中含有一個抽象方法run()。
使用Timer類中的schedule()方法可以完成對TimerTask的調度,該方法具有三個參數,其函數聲明如下:
public void schedule(TimerTask task, long delay, long period)
其中第一個參數為TimerTask的對象,通過實現其中的run()方法可以周期的執行某一個任務;第二個參數表示延遲的時間,即多長時間后開始執行;第三個參數表示執行的周期。
多個TimerTask是可以共用一個Timer的,通過調用Timer的schedule方法可以創建一個線程,并且調用一次schedule后TimerTask是無限的循環下去的,使用Timer的cancel()停止操作。當同一個Timer執行一次cancle()方法后,所有Timer線程都被終止。
這里為了驗證Timer和TimerTask的用法,舉了一個案例進行驗證,其源代碼如下所示:
package com.glemontree.timetaskdemo;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends Activity {
private int secondLeft = 6;
private TextView textView;
Timer timer = new Timer();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) findViewById(R.id.texttime);
}
public void begin(View view) {
timer.schedule(task, 1000, 1000);
}
TimerTask task = new TimerTask() {
@Override
public void run() {
// TODO Auto-generated method stub
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
secondLeft--;
textView.setText("" + secondLeft);
if (secondLeft < 0) {
timer.cancel();
textView.setText("倒計時結束");
}
}
});
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
上面這段代碼需要注意的是由于改變UI只能在主線程中進行,因此調用了runOnUiThread方法運行在主線程。
總結
以上是生活随笔為你收集整理的android的timertask,Android 中 Timer 和 TimerTask的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 品味30句对爱情的经典认识
- 下一篇: 3.NLP中文分词技术