Android开发之——子线程中使用Toast或者更新UI

时间:2021-10-22 17:47:34

Toast只能在主UI线程使用,使用下面的办法可以解决

第一种,使用Looper,不过这种办法会终止,子线程之后的代码


[java] view plain copy
  1. Looper.prepare();     
  2. Toast.makeText(aActivity.this,"test",Toast.LENGTH_SHORT).show();  
  3. Looper.loop();  

第二种,就是用 Handler Message

[java] view plain copy
  1. private final Handler msgHandler = new Handler(){  
  2.         public void handleMessage(Message msg) {  
  3.                 switch (msg.arg1) {  
  4.                 case R.string.msg_not_network:  
  5.                         Toast.makeText(getApplicationContext(), getResources().getString(R.string.msg_not_network), Toast.LENGTH_SHORT).show(); 
  6.                         Toast.makeText(getApplicationContext(), msg.obj.toString(), Toast.LENGTH_SHORT).show(); 

  7.                         break;  
  8.                 default:  
  9.                         break;  
  10.                 }  
  11.         }  
  12. };  

在子线程中使用

[java] view plain copy
  1. Message msg = msgHandler.obtainMessage();  
  2. msg.arg1 = R.string.msg_not_network; 
  3. msg.obj. = "显示的内容" ;
  4. msgHandler.sendMessage(msg);