HandlerThreadスレッド開始handler
1922 ワード
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
public class MainActivity extends Activity{
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// UI
System.out.println("onCreate CurrentThread = "
+ Thread.currentThread().getName());
setContentView(R.layout.activity_main);
// Looper
HandlerThread handler = new HandlerThread("handler_Thread");
handler.start();
MyHandler myHandler = new MyHandler(handler.getLooper());
Message msg = myHandler.obtainMessage();
msg.obj = "abc";
Bundle data = new Bundle();
data.putString("title", " ");
data.putString("info", " ");
msg.setData(data);
// msg , msg Handler
msg.sendToTarget();
}
class MyHandler extends Handler {
public MyHandler() {
}
public MyHandler(Looper looper) {
super(looper);
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
String s = (String) msg.obj;
Bundle data = msg.getData();
String title=data.getString("title");
String info=data.getString("info");
System.out.println("title is " + title + ", info is" + info);
System.out.println("msg.obj is " + s);
System.out.println(Thread.currentThread().getId());
System.out.println("handlerMessage");
}
}
}
HandlerThreadはThreadを継承するので、それ自体がスレッドです.彼はLooperオブジェクトを含むスレッドクラスを作成することに似ていますが、LooperはHandlerクラスを作成するために使用することができます.これにより、自分でLooperオブジェクトをインスタンス化する必要がなく、preareとLoopを呼び出すのではなく、HandlerThreadを直接呼び出すことができます.通常のThreadよりもLooperオブジェクトが多くなります.