Android广播机制
16lz
2021-01-23
广播接收器可以接收广播,分为动态注册(代码实现)和静态注册(AndroidManifest中注册)
动态注册示例代码:
public class Main2Activity extends AppCompatActivity { private IntentFilter intentFilter; private BroadcastReceiver broadcastReceiver; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); intentFilter=new IntentFilter(); intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); broadcastReceiver=new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo(); if (networkInfo!=null&&networkInfo.isAvailable()){ System.out.println("network is available"); }else { System.out.println("network is unavailable"); } } }; registerReceiver(broadcastReceiver,intentFilter); } @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(broadcastReceiver); }}
AndroidManifest中静态注册
广播不允许开启线程,所以不要在receive()中写耗时的操作,通常广播接收器接收到广播之后打开程序的其他组件
广播分为标准广播和有序广播
标准广播:异步执行的广播,可以被其他广播接收器同时接收,效率高
有序广播:同步执行的广播,同一时间只能有一个广播器可以接收,优先级高的广播接收器先收到消息,可以拦截
发送标准广播:
Intent intent=new Intent("com.example.administrator.layouttest002.Test");sendBroadcast(intent);
发送有序广播:
Intent intent=new Intent("com.example.administrator.layouttest002.Test");sendOrderedBroadcast(intent,null);
有序广播截断
abortBroadcase();
本地广播
LocalBroadcastManager用这个类发送广播,注册广播接收器
(具体代码就不放了,和广播同理)
广播可以用在BaseActivity类中实现任何activity的强制下线功能
更多相关文章
- [置顶] Android常用功能代码
- android 代码中设置字体大小
- Android用代码安装APK,不用选择“打包安装程序”
- Android 关于wifi管理的代码
- Android 屏幕截图 代码
- 转:android 实现 流媒体 播放远程mp3文件 代码
- Android 笔记.代码段
- Android 购物车加减功能的实现代码
- Android几个常用功能代码(校园助手开发笔记)