chapter4
动态添加碎片主要分为 5 步。
- 创建待添加的碎片实例。
- 获取到 FragmentManager,在活动中可以直接调用 getFragmentManager()方法得到。
- 开启一个事务,通过调用 beginTransaction()方法开启。
- 向容器内加入碎片,一般使用 replace()方法实现,需要传入容器的 id 和待添加的碎片实例。
- 提交事务,调用 commit()方法来完成
chapter5
1.创建广播接收器;新建一个类,继承自BroadcastReceiver();重写OnReceive()方法;(下面是动态注册广播接收器关键代码)
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVIVY_CHANGE");
networkChangeReceiver = new NetworkChangeReceiver();
registerReceiver(networkChangeReceiver,intentFilter);
2.静态广播接收器;
重新新建一个类BootCompleteReveicer继承BroadcastReciver(),重写方法OnReveice();然后在manifest.xml中进行注册;
<receiver android:name = ".BootCompleteReceiver">
z在<intentFilter>标签中加入想要接收的广播;
<intent-filter>
<action android:name = "android:intent.action.BOOT_COMPLETED"/>
</intent-filter>
最后记得声明权限;<uses-permission>
3.创建发送广播(以下是发送标准广播关键代码)
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
sendBroadcast(intent);
凡是监听com.example.broadcasttest.MY_BROADCAST广播的接收器全部会接收到消息。
4.发送有序广播
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
sendOrderedBroadcast(intent,null);
然后在manifest设定接收的优先级;<intent-filter android:priority = "100">
如果要截断广播,可在onReceive()中加入abortBroadcast();
5.使用本地广播;解决安全性问题;使用了一个 LocalBroadcastManager 来对广播进行管理,并提供了发送广播和注册广播接收器的方法
LocalBroadcastManager localBroadcastManager = LocalBroadcastManager.getInstance(this);//获取实例;
Intent intent = new Intent("com.example.broadcasttest.MY_BROADCAST");
localBroadcastManager.sendBroadcast(intent);//发送本地广播
注册本地广播监听器:
localBroadcastManager.registerReceiver(localReceiver,intentFilter);
优势:1,防止机密数据泄露;2.没有安全漏洞隐患;3.更高效;
6.总结:广播的使用分收发方;简单讲;
发方的思路是新建一个intent,包含要发出的"广播特征";然后sendBroadcast(intent)即可。
收方的思路:新建一个Receiver implement BroadcastReceiver()继承自BroadcastReceiver,在onReceiver()中实现广播的
功能,比如强制下线功能。然后在manifest.XML中注册该广播
<Receiver android.name = "Receiver"/>,
<intent-filter>
< action name = "广播特征" />
</intent-filter>