首页 新闻 会员 周边

救命啊 ,兄弟们 ! handleMessage中获取message失败

0
[已解决问题] 解决于 2017-08-06 10:14

在handleMessage的,在子线程中得到message的消息,为什么为空,也就是string3为什么为null?            拜谢了

运行结果:

  string : a

  string3: null

  

大魚海棠的主页 大魚海棠 | 菜鸟二级 | 园豆:202
提问于:2017-08-03 19:27
< >
分享
最佳答案
1

只能这么回答,因为新线程运行时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         }

暂停一会而,就能得到正确输出。

奖励园豆:5
TCG2008 | 小虾三级 |园豆:1150 | 2017-08-05 14:41

thanks 原因算是找到了 不过还是要找找理由的

大魚海棠 | 园豆:202 (菜鸟二级) | 2017-08-06 10:12
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册