天天看點

Android 比Timer更好方法

 java代碼:

timer timer = new timer( );

timertask task = new timertask( ) {

public void run ( ) {

message message = new message( );

message.what = 1;

handler.sendmessage(message);

}

};

final handler handler = new handler( ) {

public void handlemessage(message msg) {

switch (msg.what) {

case 1:

log.e("timer","timer");

update( );

break;

super.handlemessage(msg);

protected void ondestroy ( ) {

if (timer != null) {

timer.cancel( );

timer = null;

super.ondestroy( );

protected void oncreate (bundle savedinstancestate) {

super.oncreate(savedinstancestate);

this.setcontentview(r.layout.main);

timer.schedule(task,1000,5000);

        最重要的一點是 timer.schedule(task,1000,5000),如果設定為 timer.schedule(task,5000)是不會工作的。

        因為timer.schedule(task,5000) 是表示執行一次的任務。

        timer.schedule(task,1000,5000)表示 1 秒鐘後開始 5 秒鐘為周期 重複執行,

        更好的方法是通過下面的代碼 (handler加runnable線程,更簡潔)

java代碼:

private handler handler = new handler( );

private runnable runnable = new runnable( ) {

handler.postdelayed(this,1000);

//postdelayed(this,1000)方法安排一個runnable對象到主線程隊列中

handler.postdelayed(runnable,1000); // 開始timer

handler.removecallbacks(runnable); //停止timer

繼續閱讀