Handlerマルチスレッド1
1790 ワード
例:
PS:Handlerには2つのメッセージキューがあります.1つはpostスレッドキューで、もう1つはmessageメッセージキューで、2つのキューの方法は非同期です.handler匿名内部クラスメソッドはhandler.sendMessage(msg)後に実行します.Thread.currentThread().getId()とThread.currentThread().getName()は現在のスレッドIdとNameを得る方法Handlerである.postメソッドとRunnableは同じスレッドにあります(重要!!)
public class HandlerActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button b1 = (Button)findViewById(R.id.button1);
Button b2 = (Button)findViewById(R.id.button2);
b1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//
handler.post(r);
}
});
b2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//
handler.removeCallbacks(r);
}
});
}
Handler handler = new Handler();
/**
* handler.sendMessage(msg)
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
System.out.println("msg:"+msg.arg1);
}
};
*/
Runnable r = new Runnable() {
@Override
public void run() {
System.out.println("sysout Thread");
// ,Message Android
Message msg = handler.obtainMessage();
// msg arg1 122, arg1 arg2
//
msg.arg1 = 122;
//
handler.sendMessage(msg);
//3000
handler.postDelayed(r, 3000);
}
};
}
PS:Handlerには2つのメッセージキューがあります.1つはpostスレッドキューで、もう1つはmessageメッセージキューで、2つのキューの方法は非同期です.handler匿名内部クラスメソッドはhandler.sendMessage(msg)後に実行します.Thread.currentThread().getId()とThread.currentThread().getName()は現在のスレッドIdとNameを得る方法Handlerである.postメソッドとRunnableは同じスレッドにあります(重要!!)