android跨线程通信的方式

 

  1. 主线程与子线程之间的通信

    //子线程向主线程发送消息
    /*
    *主线程在被创建的时候就已经自带Looper对象,因此只需要在主线程中新建消息处理对象,即可实现对子线程中的消息处理
    */
    package com.neostra.test;

    import androidx.annotation.NonNull;
    import androidx.appcompat.app.AppCompatActivity;

    import android.content.Context;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.util.Log;
    import android.widget.Toast;

    public class MainActivity extends AppCompatActivity {
      final Handler mHandler = new Handler(){
           @Override
           public void handleMessage(@NonNull Message msg) {
               super.handleMessage(msg);
               if (msg.what==0x123){
                   Toast.makeText(MainActivity.this,"消息处理",Toast.LENGTH_SHORT).show();
              }
               Log.d("oy","nothing");
          }
      };//主线程中的Handler对象,用于处理消息
       Thread mThread = new Thread(){//创建子线程
           @Override
           public void run() {
               super.run();
               Message message=new Message();//子线程中的消息对象,用于存储需要发送给主线程的消息
               message.what=0x123;
               mHandler.sendMessage(message);//使用Handler消息传递机制,将message以sendmessage的方式发送到主线程,主线程中的Handler对象负责处理该消息
          }
      };

       @Override
       protected void onCreate(Bundle savedInstanceState) {
           super.onCreate(savedInstanceState);
           setContentView(R.layout.activity_main);
           mThread.start();//开启子线程,子线程向主线程发送消息,主线程中新建一个Handler对象负责处理子线程中的消息
      }
    }
  2. 子线程与子线程之间的通信

posted @ 2022-05-30 11:52  安妍  阅读(198)  评论(0编辑  收藏  举报