Android上級者進級教程(九)の----Alndroid Handlerの使用
2852 ワード
皆さん、こんにちは.私たちはAndroid Handlerの使用について話しています.Handlerを話す前に、プログラムを5秒でTitleを更新する方法について質問します.
まずJavaプログラミングに慣れている人が、Handlerの使い方がわからない前にどのように書かれているかを見てみましょう.コードは以下の通りです.
しかし、プログラムを実行すると、予想される効果が得られないため、AndroidはHandlerという特殊なクラスを導入し、RunnableとActivityが相互作用する橋渡しと言えるので、runメソッドでMessageを送信するだけで、Handlerでは異なるMessageで異なるタスクを実行します.
修正したコードは次のとおりです.
まずJavaプログラミングに慣れている人が、Handlerの使い方がわからない前にどのように書かれているかを見てみましょう.コードは以下の通りです.
package com.android.tutor;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
public class HandlerDemo extends Activity {
//title setTitle , int
private int title = 0;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTask(), 1, 5000);
}
private class MyTask extends TimerTask{
@Override
public void run() {
setTitle("Welcome to Mr Wei's blog " + title);
title ++;
}
}
}
しかし、プログラムを実行すると、予想される効果が得られないため、AndroidはHandlerという特殊なクラスを導入し、RunnableとActivityが相互作用する橋渡しと言えるので、runメソッドでMessageを送信するだけで、Handlerでは異なるMessageで異なるタスクを実行します.
修正したコードは次のとおりです.
package com.android.tutor;
import java.util.Timer;
import java.util.TimerTask;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
public class HandlerDemo extends Activity {
//title setTitle , int
private int title = 0;
private Handler mHandler = new Handler(){
public void handleMessage(Message msg) {
switch (msg.what) {
case 1:
updateTitle();
break;
}
};
};
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Timer timer = new Timer();
timer.scheduleAtFixedRate(new MyTask(), 1, 5000);
}
private class MyTask extends TimerTask{
@Override
public void run() {
Message message = new Message();
message.what = 1;
mHandler.sendMessage(message);
}
}
public void updateTitle(){
setTitle("Welcome to Mr Wei's blog " + title);
title ++;
}
}