当前位置: 代码迷 >> Android >> 请问一下线程为什么没有执行
  详细解决方案

请问一下线程为什么没有执行

热度:54   发布时间:2016-04-28 04:22:01.0
请教一下线程为什么没有执行
代码如下:
        protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.cityname);

mhandler = new Handler(){
public void handMessage(Message msg){
if(msg.what == 1){
TextView te =(TextView) findViewById(R.id.cityname1);
te.setText("123123");
}
}
};


button = (Button) findViewById(R.id.cityname1);
button.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Runnable r = new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
Message message = new Message();
                 message.what = 1;
                 mhandler.sendMessage(message);
}
};
Thread th = new Thread(r);
th.start();
if(th == null){
Log.v("线程正在启动", "线程正在启动");
th.start();
}else{
Log.v("线程没启动", "线程没启动");
}
}
});
------解决方案--------------------
Thread th = new Thread(r);你这th不可能为空。
下面的判断是多余的。
你th.start() 现在就执行了,只是你的线程做了发送一个handler 消息而已。
------解决方案--------------------
Thread th = new Thread(r);
th.start();
if(th == null){
Log.v("线程正在启动", "线程正在启动");
th.start();
}else{
Log.v("线程没启动", "线程没启动");
}

你都给th,new了个线程 th当然不等于null啦
------解决方案--------------------
Thread th = new Thread(r);
th.start();
//th!=null,下面的判断就有问题。顶多给上面两行代码加个try catch
------解决方案--------------------
@Override
public void handMessage(Message msg)
此方法需要重写
  相关解决方案