android 广播模拟-简单版

该博客主要对Android广播知识进行总结,包括本地、无序、有序广播等相关操作,还给出知识结构关系图。同时为理清广播学习思路,用Java做简单模拟,介绍了具体成员和动作设计、广播执行步骤,还给出类图和代码及运行效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 广播知识总结
1.知识字典
本地 LocalBroadcastManager.
无序 sendBroadcast
有序 sendOrdereadBroadcast()
注册 registerReceiver
静态 +<action android:name
处理 BroadcastReceiver+onReceiver()
2.知识结构关系图
广播知识总结表二 简单广播关系模拟
1 目的
关于android 广播的学习,注册、发送、全局广播、局部广播、自定义广播、系统广播。
学起来有点绕,为了缕清思路和规律,我今天用java做了以下简单的模拟。
2 具体成员和动作设计
定义广播:就是定义一个字符串
有一个广播中心:收到广播后,调用注册的回调函数
注册:如果您想收到广播后做相应的处理,那么您就把您要处理的函数注册给广播中心
发广播:向广播中心发送广播(一个定义好的字符串)
广播响应:广播中心收到广播后,调用该广播下定义的回调函数
3 广播执行的4个步骤
1.定义广播
2.注册广播
3.发送广播
4.接收广播
4 类图如下
4.1中文
广播模拟类图
4.2英文
类图英文

5 代码如下

package broadcastSimulator;
import java.util.ArrayList;

public class BroadcastSimulator {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("android 广播功能模拟");
		Clinet c = new Clinet();
		c.maind();
	}
}
class BroadcastReceiver{
	public void onReceiver() {
		System.out.println("BroadcastSimulator");
	}
}
class Broadcaster{
	public Broadcaster(String name,BroadcastReceiver b) {
		this.name = name;
		mBroadcastReceiver.add(b);
	}
	public String name;
	public ArrayList<BroadcastReceiver> mBroadcastReceiver = new ArrayList<BroadcastReceiver>();
	public void send() {
		for(BroadcastReceiver b:mBroadcastReceiver) {
			b.onReceiver();
		}
	}
}
class BroadcastManageerCenter{
	public ArrayList<Broadcaster> mBroadcaster = new ArrayList<Broadcaster>();
	void broadcast() {
	}
	public void registerReceiver(String str,BroadcastReceiver b) {
		for(Broadcaster broadcaster:mBroadcaster) {
			if(broadcaster.name.equals(str)) {
				broadcaster.mBroadcastReceiver.add(b);
				return;
			}
		}
		mBroadcaster.add(new Broadcaster(str,b));
	}
	public void sendBroadcast(String broadcastName) {
		for(Broadcaster broadcaster:mBroadcaster) {
			if(broadcaster.name.equals(broadcastName)) {
				broadcaster.send();
			}
		}
	}
}
class Activity{
	public static BroadcastManageerCenter mBroadcastManageerCenter = null;
	public Activity() {
		if(mBroadcastManageerCenter == null) {
			mBroadcastManageerCenter = new BroadcastManageerCenter();
		}
	}
	protected void registerReceiver(String str,BroadcastReceiver b) {
		mBroadcastManageerCenter.registerReceiver(str, b);
	}
	protected void sendsendBroadcast(String broadcastName) {
		mBroadcastManageerCenter.sendBroadcast(broadcastName);
	}
}
class ConcreteActivityReceiver extends Activity{
	String testBroadcast = "testBroadcast";
	class MyBroadcastReceiver extends BroadcastReceiver{
		public void onReceiver() {
			System.out.println("ConcreteActivity 收到广播");
		}
	}
	public void onCreate() {
		registerReceiver(testBroadcast,new MyBroadcastReceiver());
	}		
}
class ConcreteActivitySend extends Activity{
	String testBroadcast = "testBroadcast";
	public void sendBroadcast() {
		System.out.println("ConcreteActivitySend 发送广播");
		sendsendBroadcast(testBroadcast);
	}
}
class Clinet{
	public Clinet() {}
	void maind() {
		ConcreteActivityReceiver receiver = new ConcreteActivityReceiver();
		receiver.onCreate();
		ConcreteActivitySend send = new ConcreteActivitySend();
		send.sendBroadcast();
	}
}

6 运行效果
广播模拟运行效果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值