如何理解android多线程里的getLooper方法
下面的代码是学习Handler.post方法的,第一种写法没有使用getLooper,结果运行的效果是一个线程,第二种写法使用了getLooper,运行的效果是多线程的:
package com.WriteCode.AndroidHandlerPost;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.util.Log;
public class AndroidHandlerPost extends Activity {
private Handler mHandler = null;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//第一种写法beg,不使用getLooper,那么整个是一个线程(UI线程)
//mHandler = new Handler();
//第一种写法end,不使用getLooper,那么整个是一个线程(UI线程)
//第二种写法beg,不使用getLooper,那么整个是两个线程
HandlerThread handlerThread = new HandlerThread("myHandlerThread");
handlerThread.start();
mHandler = new Handler(handlerThread.getLooper());
//第二种写法end,不使用getLooper,那么整个是两个线程
mHandler.post(new MyRunnable());
Log.e("OnCreate", "The Thread is: " + Thread.currentThread().getId());
setContentView(R.layout.main);
}
private class MyRunnable implements Runnable
{
@Override
public void run() {
// TODO Auto-generated method stub
Log.e("Runnable", "The Thread is running");
Log.e("Runnable", "The Thread is: " + Thread.currentThread().getId());
try
{
Thread.sleep(6000);
}
catch (InterruptedException e)
{
e.printStackTrace();
}
}
}
}
谁能解释下getLooper方法是干什么的,第二种方法为什么能实现多线程,谢谢