Android广播大全
一、Android系统广播介绍
1.标准广播(Normal Broadcasts)
标准广播是完全异步执行的广播,所有接收者几乎同时接收广播消息,由于无需等待其他接收者处理完消息,标准广播的性能较高,适用于不需要顺序处理的广播消息。
2.有序广播(Ordered Broadcasts)
有序广播是同步执行的广播,接收者按优先级顺序依次接收和处理广播消息,每个接收者可以在处理完消息后修改广播数据或中止广播的继续传播,有序广播适用于需要按顺序处理的消息。
3.粘性广播(Sticky Broadcasts)
粘性广播在发送后会一直存在,直到被新的相同类型的广播替代,接收者在注册时可以立即接收到最近的粘性广播消息,从Android 5.0开始,粘性广播已被弃用,不推荐使用。
二、常见系统广播
设备相关广播
Intent.ACTION_AIRPLANE_MODE_CHANGED:关闭或打开飞行模式时发出。
Intent.ACTION_BATTERY_CHANGED:电池电量发生变化时发出。
Intent.ACTION_BATTERY_LOW:电池电量低时发出。
Intent.ACTION_BATTERY_OKAY:电池电量充足时发出。
Intent.ACTION_BOOT_COMPLETED:系统启动完成后发出。
Intent.ACTION_CLOSE_SYSTEM_DIALOGS:屏幕超时进行锁屏时发出。
Intent.ACTION_DATE_CHANGED:设备日期发生改变时发出。
Intent.ACTION_DEVICE_STORAGE_LOW:设备内存不足时发出。
Intent.ACTION_DEVICE_STORAGE_OK:设备内存从不足到充足时发出。
输入输出相关广播
Intent.ACTION_CAMERA_BUTTON:按下照相按键时发出。
Intent.ACTION_HEADSET_PLUG:耳机插入或拔出时发出。
Intent.ACTION_MEDIA_BUTTON:按下媒体按键时发出。
Intent.ACTION_MEDIA_SCANNER_FINISHED:扫描介质完成时发出。
Intent.ACTION_MEDIA_SCANNER_STARTED:开始扫描介质时发出。
Intent.ACTION_MEDIA_SCANNER_SCAN_FILE:扫描特定文件时发出。
网络与连接相关广播
Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE:外部应用程序安装完成后发出。
Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE:外部应用程序卸载完成后发出。
Intent.ACTION_NEW_OUTGOING_CALL:有新电话呼出时发出。
用户管理与配置相关广播
Intent.ACTION_BUG_REPORT:用户通过系统界面报告Bug时发出。
Intent.ACTION_BUG_REPORT_SHARE:用户分享Bug报告时发出。
Intent.ACTION_CONFIGURATION_CHANGED:设备当前设置改变时发出。
Intent.ACTION_LOCALE_CHANGED:设备区域设置改变时发出。
Intent.ACTION_MANAGE_PACKAGE_STORAGE:管理应用程序包存储时发出。
三、自定义广播
创建广播接收器类
创建一个继承自BroadcastReceiver
的类,并重写onReceive()
方法来处理接收到的广播消息。
public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // 处理接收到的广播消息 String action = intent.getAction(); if ("com.example.MY_ACTION".equals(action)) { // 执行相应操作 } }}
注册广播接收器
动态注册
在代码中使用registerReceiver()
方法注册广播接收器:
public class MainActivity extends AppCompatActivity { private MyBroadcastReceiver receiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 动态注册广播接收器 receiver = new MyBroadcastReceiver(); IntentFilter filter = new IntentFilter("com.example.MY_ACTION"); registerReceiver(receiver, filter); } @Override protected void onDestroy() { super.onDestroy(); // 取消注册广播接收器 unregisterReceiver(receiver); }}
静态注册
在AndroidManifest.xml
文件中声明广播接收器:
<receiver android:name=".MyBroadcastReceiver"> <intent-filter> <action android:name="com.example.MY_ACTION" /> </intent-filter> </receiver>
发送广播
发送标准广播
Intent intent = new Intent("com.example.MY_ACTION"); sendBroadcast(intent);
发送有序广播
sendOrderedBroadcast(intent, null);
四、注意事项
1、安全性:广播机制可能会带来安全隐患,恶意应用可能会接收或发送广播消息,使用权限和签名广播可以提高安全性。
2、性能:频繁发送广播可能会影响性能,特别是在有大量接收者的情况下,使用LocalBroadcastManager
可以限制广播范围,提高性能。
3、生命周期:动态注册的广播接收者需要在适当的生命周期方法中注册和取消注册,以避免内存泄漏。
4、隐式广播限制:从Android 8.0开始,所有的隐式广播都不允许使用静态注册的方式来接收,必须使用动态注册。
各位小伙伴们,我刚刚为大家分享了有关“android广播大全”的知识,希望对你们有所帮助。如果您还有其他相关问题需要解决,欢迎随时提出哦!
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/623787.html