android线程与主Acitivity通信

来源:互联网 发布:淘宝店铺归属地怎么改 编辑:程序博客网 时间:2024/05/20 05:07

     目前的项目需要在主Activity中启动多个耗时的子线程,由于程序管理的关系,有的简短子线程就直接放在主Activity中,有的子线程代码篇幅太大,就创建了新的类。

但是两种情况下,都需要传递消息,消息由主Activity中的mainHandler处理(因为涉及到界面),今天小结一下做个备忘,一共有两种通信情况:


1、主Activity创建子线程,并直接在主Activity中调用mainHandler处理消息

      方法如下
    class MyThread extends Thread {  
        public void run() {  
                     ........
                     Message msg = new Message();  
                     msg.what = 2;
                     mainActivity.this.myHandler.sendMessage(msg);
                     ........
        }
}

2、主Activity创建子线程,但是子线程的内容是一个独立的类,子线程内部需要调用mainHandler处理消息

     方法如下

     在主Activity中增加一个public static mainActivity类型的变量名为Instance,在主Activity的OnCreate函数中,给该Instance赋值为mainActivity.this;如果线程内部需要使用主Activity的线程的mainHandler处理消息,可以把上面代码中的mainActivity.this.myHandler.sendMessage(msg)改为Instance.myHandler.sendMessage(msg);


  但是网上的资料有说,Activity直接跟Thread通信是不太好的,影响效率,最好是通过Service去控制Thread;也有同事建议我用线程池,正在学习中。

原创粉丝点击