第五章
-
广播分类
-
标准广播,完全异步,所有广播接收器都会在同一时刻接收到广播,不可拦截
-
有序广播,同步广播,广播接收器按照优先级接收广播,同一时刻只会有一个接收器能收到广播,等接收器的逻辑处理完后,再把广播传递出去,也可以选择把广播拦截。
-
-
广播接收器可以根据自己感兴趣的广播进行注册,当感兴趣的广播发出时,接收器就会接收到广播并且在内部进行逻辑处理。
-
如何创建一个广播接收器?
-
创建一个java类,继承自BroadcastReceiver,并重写父类的onReceive方法,在方法内部处理接收到广播后的逻辑。
-
-
注册广播的两种方式
-
在代码中动态注册
-
IntentFilter intentFilter = new IntentFilter(); //添加想要监听的广播对应的action intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE"); receiver = new NetWorkChangeReceiver(); registerReceiver(receiver,intentFilter);
-
@Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(receiver); }
-
获取网络状态:
-
ConnectivityManager manager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo info = manager.getActiveNetworkInfo(); if (info != null&& info.isAvailable()){ Toast.makeText(getApplicationContext(),"net work is Available",Toast.LENGTH_SHORT).show(); }else { Toast.makeText(getApplicationContext(),"net work is unAvailable",Toast.LENGTH_SHORT).show(); }
-
-
优点:可以自由控制广播的注册和注销,灵活性比较大
-
缺点:必须要程序启动之后才会接收到广播,因为注册的逻辑是写在onCreate里面
-
-
在AndroidManifest.xml中静态注册
-
创建一个类继承BroadcastReceiver,重写receive方法
-
在AndroidManifest.xml中注册,并添加需要的权限
-
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> ... <receiver android:name=".BootCompleteReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED"/> </intent-filter> </receiver>
-
-
-
广播接收器不允许开启线程,当onReceive方法运行了较长时间而没有结束时,程序就会报错,因此,广播接收器扮演的是一种打开程序其他组件的角色,比如创建一条状态栏通知,或者启动一个服务
-
发送自定义广播
-
发送标准广播
-
创建一个广播接收器。
-
注册广播接收器并且通过intent-filler指定接收器能够接收什么广播
-
Intent intent = new Intent(“com.example.MY_BRROADCAST”);
sendBroadcast(intent)
-
可以通过intent给广播接收器传递一些数据
-
-
发送有序广播
-
将上面的sendBroadcast 改为 sendOrderBroadcast(intent,null)
-
两个参数,第一个仍然是intent,第二个是和权限相关的字符串,传入null就可以了
-
注册广播接收器的时候在intent-filter参数中设置优先级 priority = "xx"
-
接收器中可以通过abortBroadcast方法将广播截断
-
-
-
本地广播
-
使用LocalBroadcastManager 对广播进行管理
-
getInstance方法获得LocalBroadcastManager实例
-
sendBroadcast(intent) 发送本地广播
-
registerReceiver(localReceiver,intentFilter)注册本地广播
-
unregisterReceiver 注销本地广播
-
本地广播无法通过静态注册
-
本地广播比全局广播更高效
-
-
GIT:
-
添加代码或者文件
-
git add fileName
-
-
添加目录中所有文件
-
git add .
-
-
查看当前用户的用户名
-
git config --global user.name
-
git config --global user.email
-
-
退出
-
exit
-
-