首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

在Activity中创建了一个handler,但在handler中取线程ID时取得的却不是Activity的ID号,请问原因

2013-07-27 
在Activity中创建了一个handler,但在handler中取线程ID时取得的却不是Activity的ID号,请教原因。代码如下:p

在Activity中创建了一个handler,但在handler中取线程ID时取得的却不是Activity的ID号,请教原因。
代码如下:


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());
}
}

[解决办法]
引用:
引用:

主线程拥有自己的消息列队,一般线程创建时没有自己的消息列队,消息处理时就在主线程中完成,如果线程中使用Looper.prepare()和Looper.loop()创建了消息队列就可以让消息处理在该线程中完成。

Java code


public class MainActivity extends Activity implement……


不仔细看还没看到呢 :-)  

你用错了handler.handleMessage(handler.obtainMessage());
改成handler.sendMessage(handler.obtainMessage());


不然相当于子函数调用了。

热点排行