Android——使用 Broastcast 实现进程间通讯
16lz
2022-06-10
1 Broastcast 简介
Broadcast(广播)是 Android 中一种广泛运用的在应用程序之间传输信息的机制。使用 Broadcast 能够很方便得实现进程间通讯,一端通过 sendBroadcast(intent) 广播消息,另一端通过 registerReceiver(myReceiver) 注册 BroadcastReceiver(接收器)接收消息。
2 clien_A 代码
(1)主 Activity
MainActivity.java
package com.zhyan8.client_A;import android.content.Intent;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.view.View;import android.widget.Button;import android.widget.EditText;public class MainActivity extends AppCompatActivity { private EditText et_msg; private Button btn_send; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { et_msg = (EditText) findViewById(R.id.et_msg); btn_send = (Button) findViewById(R.id.btn_send); btn_send.setOnClickListener(cl); } View.OnClickListener cl = new View.OnClickListener() { @Override public void onClick(View v) { if (v.getId()==R.id.btn_send) { String str = et_msg.getText().toString(); Intent intent = new Intent(); intent.setAction("com.zhyan8.client_A.MainActivity"); Bundle bundle = new Bundle(); bundle.putString("msg_A", "from client_A, msg: " + str); intent.putExtras(bundle); sendBroadcast(intent); } } };}
(2)布局
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
界面如下:
3 client_B 代码
(1)主 Activity
MainActivity.java
package com.zhyan8.client_B;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;import android.content.IntentFilter;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;public class MainActivity extends AppCompatActivity { private TextView tv_msg; private IntentFilter intentFilter; private MyReceiver myReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); init(); } private void init() { tv_msg = (TextView) findViewById(R.id.tv_msg); intentFilter = new IntentFilter(); intentFilter.addAction("com.zhyan8.client_A.MainActivity"); myReceiver = new MyReceiver(); registerReceiver(myReceiver, intentFilter); } private class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); String str = bundle.getString("msg_A"); tv_msg.setText(str); } }}
(2)布局
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
界面如下:
4 效果展示
在 client_A 端编辑文本【Qwert】,如下:
client_A 端发送消息点击【发送】按钮后,在client_B端收到消息【from client_A, msg: Qwert】,如下:
client_B 端接收消息更多相关文章
- android "Only the original thread that created a view hierar
- Android(安卓)SDK下载和更新失败的解决方法!!!
- android技术分析
- Android实现手写板和涂鸦功能
- Handler面试知识小结
- 【起航计划 016】2015 起航计划 Android(安卓)APIDemo的魔鬼步伐
- android flutter 混合开发初探
- Android消息循环机制
- EventBus源码追踪