代码如下:
public class MainActivity extends Activity implements Runnable{
Handler handler = new Handler(){
public void handleMessage(Message msg){
S.p(Thread.currentThread().getId()+"-------------Handler");
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
S.p(Thread.currentThread().getId()+"-------------MainActivity");
new Thread(this).start();
}
@Override
public void run() {
S.p(Thread.currentThread().getId()+"-------------New Thread");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.handleMessage(handler.obtainMessage());
}
}
public class MainActivity extends Activity implements Runnable{
Handler handler = new Handler(){
public void handleMessage(Message msg){
S.p(Thread.currentThread().getId()+"-------------Handler");
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
S.p(Thread.currentThread().getId()+"-------------MainActivity");
new Thread(this).start();
}
@Override
public void run() {
S.p(Thread.currentThread().getId()+"-------------New Thread");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.handleMessage(handler.obtainMessage());
}
}
Handler handler = new Handler(){
public void handleMessage(Message msg){
S.p(Thread.currentThread().getId()+"-------------Handler"); //这是主线程ID
}
};
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
S.p(Thread.currentThread().getId()+"-------------MainActivity"); //这是主线程ID
new Thread(this).start();
}
@Override
public void run() {
S.p(Thread.currentThread().getId()+"-------------New Thread"); //这是新线程ID
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
handler.handleMessage(handler.obtainMessage());
}
}
谢谢你的回答。我在运行这个程序的时候,得到的结果是这样:08-28 02:51:13.838: INFO/System.out(437): 1-------------MainActivity
08-28 02:51:14.248: INFO/System.out(437): 8-------------New Thread
08-28 02:51:17.317: INFO/System.out(437): 8-------------Handler
不知道handler为何会和子线程取得相同ID,还请指教。
不仔细看还没看到呢 :-) 你用错了handler.handleMessage(handler.obtainMessage());
改成handler.sendMessage(handler.obtainMessage());
不然相当于子函数调用了。