在子线程中更改主线程中的控件的信息,在子线程中用toast-创新互联

一丶在子线程中不允许更改主线程中的控件的信息,也不允许在子线程中用toast,我们要更改的话

专注于为中小企业提供网站制作、做网站服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业武邑免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了近1000家企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

(1)消息机制:使用handler

    (由主线程调用)

    在主程序中Handler handler = new Handler(){

    public void handleMessage(Message msg){

            int type = msg.what ;//拿到msg的类型,再判断
         switch (type) {
            case SUCCESS:
               //拿到信息
               String info = (String)msg.obj ;
              //
               break;

            case FAILED:
               //拿到信息
               String faild = (String)msg.obj ;
               Toast.makeText(MainActivity.this, faild, 0).show() ;
               break;
            case ERROR:
               //拿到信息
               String error = (String)msg.obj ;
               Toast.makeText(MainActivity.this, error, 0).show() ;
               break;
         }

};

};

而在子线程中要设置Message  msg;

msg.what(设置类型)

msg.obj(设置内容)然后发送:handler.sendMessage(msg);

(2)常见消息处理api:
 runOnUiThread(runnable): 在ui主线程中运行
 playAtTime() : 在某个时间运行
 playDelay(): 延时运行

例:public class MainActivity extends Activity {

   private TextView tvinfo ;

   Handler handler = new Handler(){
      public void handleMessage(android.os.Message msg) {
         System.out.println("接收到了消息");
         tvinfo.setText((String)msg.obj) ;
      };
   } ;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);

      tvinfo = (TextView) findViewById(R.id.tvinfo) ;
   }
   public void click(View view){
      handler.postDelayed(new Runnable() {
         @Override
         public void run() {
            Message msg = Message.obtain() ;
            msg.obj = "哈哈哈,我改变了UI上的内容" ;
            handler.sendMessage(msg) ;
         }
      }, 3000) ;
   }
}

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


分享标题:在子线程中更改主线程中的控件的信息,在子线程中用toast-创新互联
文章起源:http://csdahua.cn/article/dgoocs.html
扫二维码与项目经理沟通

我们在微信上24小时期待你的声音

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流