当前位置: 代码迷 >> Android >> 请教关于主线程 发信息给 子线程 通信有关问题
  详细解决方案

请教关于主线程 发信息给 子线程 通信有关问题

热度:75   发布时间:2016-04-28 02:11:09.0
请问关于主线程 发信息给 子线程 通信问题
请问   主线程发信息给 子线程  代码如下:

public class HistoryActivity extends Activity {
 protected void onCreate(Bundle savedInstanceState) {
   
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_history);
   
   
   mHttpApi = new HttpApi();
   if(mHiThread == null) {
    mHiThread= new HiThread();
    mHiThread.start(); 
   } 
   
   public   getcodereturn(){
        // 在这个函数 是实现 发送数据给 子线程的。根据不同的情况,有时候发送 a,有时候发送 c

      //  如果发送信息  “a” 给  子线程, 这时候, 子线程 判断接收到的是 字符a, 就会 调用函数 get_a(); 以便处理相应的事情
    // 如果发送信息 ”c“  给子线程, 这时候,子线程  判断接收到的是字符b, 就会 调用函数 get_c();以便处理相应的事情
    
     请问 要实现上面所说的,  代码上应该怎么写呢?(即包括 主线程怎么处理,子线程怎么处理) 麻烦会的朋友帮忙回复?

}



private final Handler mHandler = new Handler() {
   public void handleMessage(Message msg) {
    switch (msg.what) {
    case 1:
     Log.d(TAG,"case 1  ");;
     getcodereturn(); //主线程接受到子线程的 信息后, 就会调用  getcodereturn()
    
     break;

    default:
     break;
    }
    super.handleMessage(msg);
   }
     };
     
      
      private class HiThread extends Thread {
    
       public void run() {
                 Log.i(TAG, "yong: BEGIN HistoryThread ");
        try {
                list1 = mHttpApi.tory(string);
               Message mes = mHandler.obtainMessage(1);
               mHandler.sendMessage(mes);
          } catch ( Exception e) {
          e.printStackTrace();
         }
   }
   }  
------解决思路----------------------
简单的定义全局变量不停刷新,子线程不停获取全局变量,难得aidl等
------解决思路----------------------
看看eventbus这个框架
------解决思路----------------------
发消息的话,你要在子线程中也处理消息
你上面定义的Handler是用于处理主线程的消息,那么同理,如果你想要子线程收到消息并处理,你就要实现子线程的Looper和Handler,你可以使用HandlerThread来实现。
  相关解决方案