在handleMessage的,在子线程中得到message的消息,为什么为空,也就是string3为什么为null? 拜谢了
运行结果:
string : a
string3: null
只能这么回答,因为新线程运行时Message被回收掉了,比如
1 @Override 2 public void handleMessage(final Message msg) 3 { 4 switch (msg.what) 5 { 6 case 1: 7 String str1=msg.getData().getString("a"); 8 System.out.println("what1:"+msg.what+", str1 :"+str1); 9 10 new Thread(new Runnable() 11 { 12 @Override 13 public void run() 14 { 15 String str2=msg.getData().getString("a"); 16 System.out.println("what2:"+msg .what+", str2 :"+str2); 17 } 18 }) .start(); 19 try 20 { 21 Thread.sleep(3000); 22 } catch (InterruptedException e) 23 { 24 e.printStackTrace(); 25 } 26 break; 27 } 28 }
暂停一会而,就能得到正确输出。
thanks 原因算是找到了 不过还是要找找理由的