Android TimerTask 的簡(jiǎn)單應(yīng)用及注意事項(xiàng)

成都創(chuàng)新互聯(lián)是一家專注于做網(wǎng)站、成都做網(wǎng)站與策劃設(shè)計(jì),彰武網(wǎng)站建設(shè)哪家好?成都創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:彰武等地區(qū)。彰武做網(wǎng)站價(jià)格咨詢:13518219792
Android應(yīng)用開發(fā)中常常會(huì)用到定時(shí)器,不可避免的需要用到 TimerTask 定時(shí)器任務(wù)這個(gè)類
下面簡(jiǎn)單的一個(gè)示例演示了如何使用TimerTask
這個(gè)示例演示了3秒未有觸屏事件發(fā)生則鎖屏(只是設(shè)置下文本,意思一下)有觸屏事件則解除鎖定
public class ColTimerTaskActivity extends Activity {
/** Called when the activity is first created. */
private final String TAG = "ColTimerTaskActivity";
private final int EVENT_LOCK_WINDOW = 0x100;
private TextView textView;
private Handler mHandler;
private Timer mTimer;
private MyTimerTask mTimerTask;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
textView = (TextView)findViewById(R.id.textview);
mHandler = new Handler(){
public void handleMessage(Message message){
Log.i(TAG, "message what = " + message.what);
if (message.what == 0x100){
lockWindow();
}
}
};
mTimer = new Timer(true);
resumeWindow();
StartLockWindowTimer();
}
public boolean onTouchEvent(MotionEvent event)
{
// TODO Auto-generated method stub
resumeWindow();
StartLockWindowTimer();
return super.onTouchEvent(event);
}
public void resumeWindow(){
textView.setText("main window");
}
public void lockWindow(){
textView.setText("lock window");
}
public void StartLockWindowTimer(){
if (mTimer != null){
if (mTimerTask != null){
mTimerTask.cancel(); //將原任務(wù)從隊(duì)列中移除
}
mTimerTask = new MyTimerTask(); // 新建一個(gè)任務(wù)
mTimer.schedule(mTimerTask, 3000);
}
}
class MyTimerTask extends TimerTask{
@Override
public void run() {
// TODO Auto-generated method stub
Log.i(TAG, "run...");
Message msg = mHandler.obtainMessage(EVENT_LOCK_WINDOW);
msg.sendToTarget();
}
}
}
這里需要注意兩個(gè)問(wèn)題:
if (mTimerTask != null){
mTimerTask.cancel(); //將原任務(wù)從隊(duì)列中移除
}
每次放定時(shí)任務(wù)前,確保之前任務(wù)已從定時(shí)器隊(duì)列中移除
mTimerTask = new MyTimerTask(); // 新建一個(gè)任務(wù)
每次放任務(wù)都要新建一個(gè)對(duì)象,否則出現(xiàn)一下錯(cuò)誤:
ERROR/AndroidRuntime(11761): Java.lang.IllegalStateException: TimerTask is scheduled already
所以同一個(gè)定時(shí)器任務(wù)只能被放置一次
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
網(wǎng)站欄目:Android TimerTask的簡(jiǎn)單應(yīng)用及注意事項(xiàng)
分享URL:http://www.chinadenli.net/article42/pgceec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、靜態(tài)網(wǎng)站、企業(yè)建站、網(wǎng)站策劃、微信公眾號(hào)、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)