package com.example.testhandler;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
Log.d("hu","MyHandler id = " + Thread.currentThread().getId());
mythread.testMethod();
super.handleMessage(msg);
}
};
Handler myThreadHandler;
MyThread mythread = new MyThread();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("hu","MainActivity ui thread id = " + Thread.currentThread().getId());
mHandler.sendEmptyMessage(0);
//--------------------------------------
mythread.start();
myThreadHandler.sendEmptyMessage(0);
}
class MyThread extends Thread{
public MyThread() {
// TODO Auto-generated constructor stub
}
@Override
public void run() {
Log.d("hu","MyThread id = " + Thread.currentThread().getId());
Looper.prepare();// 创建该线程的Looper对象,用于接收消息,在非主线程中是没有looper的所以在创建handler前一定要使用prepare()创建一个Looper
myThreadHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
Log.d("hu","myThreadHandler id = " + Thread.currentThread().getId());
testMethod();
}
};
Looper.myLooper().loop();//建立一个消息循环,该线程不会退出
super.run();
}
public void testMethod(){
//xiazai
Log.d("hu","testMethod which id = " + Thread.currentThread().getId());
}
}
}
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.Menu;
public class MainActivity extends Activity {
Handler mHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
Log.d("hu","MyHandler id = " + Thread.currentThread().getId());
mythread.testMethod();
super.handleMessage(msg);
}
};
Handler myThreadHandler;
MyThread mythread = new MyThread();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("hu","MainActivity ui thread id = " + Thread.currentThread().getId());
mHandler.sendEmptyMessage(0);
//--------------------------------------
mythread.start();
myThreadHandler.sendEmptyMessage(0);
}
class MyThread extends Thread{
public MyThread() {
// TODO Auto-generated constructor stub
}
@Override
public void run() {
Log.d("hu","MyThread id = " + Thread.currentThread().getId());
Looper.prepare();// 创建该线程的Looper对象,用于接收消息,在非主线程中是没有looper的所以在创建handler前一定要使用prepare()创建一个Looper
myThreadHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
Log.d("hu","myThreadHandler id = " + Thread.currentThread().getId());
testMethod();
}
};
Looper.myLooper().loop();//建立一个消息循环,该线程不会退出
super.run();
}
public void testMethod(){
//xiazai
Log.d("hu","testMethod which id = " + Thread.currentThread().getId());
}
}
}