android广播的注册
1. Android 第六讲 广播接收器和服务
两种方式:静态注册和动态注册
动态注册:
1)动态注册:需要定义一个继承自BroadcastReceiver类的子类,该接收器需要在Activity中的onDestroy中注销
2)静态注册:通过在AndroidManifest.xml中配置
两种广播形式:有序广播和无序广播
1)无序广播:接受标准广播的接收器将同时收到广播消息,异步执行,没有先后顺序 sendBroadCast
2)有序广播:sendOrderedBroadCast,按照一定顺序先后被接受顺序,由priority属性决定,abortBroadCast中断广播
如果只想在本应用中发送和接受广播,使用LocalBroadcastReceiver来对广播进行管理
本地广播不支持静态注册
优点 :安全高效
Service是Android中的一种组件,和Activity的级别一致,但不能自己运行,只能后台运行,和其他组件交互,服务必须注册才能使用
本地服务:服务依附在主线程中,节约资源,主线程死掉服务终止
远程服务:服务在独立进程中,灵活性好 ,占用资源高
两种服务的启动模式:
1)start方式:调用者和服务之间没有关联,调用者退出不会影响服务,startService启动服务,如果服务不存在,调用onCreat方法,然后onStartCommand被调用。stopService关闭服务,onDestroy方法被调用
2)bind方式:调用者和服务绑定,调用者退出,服务终止bindService启动服务,onCreate方法创建服务,onBind方法绑定服务,onUnbind方法解绑,onDestory在服务结束时调用
2. Android闱欐佹敞鍐屽箍鎾鍜屽姩镐佹敞鍐屽箍鎾镄勫尯鍒
1.锷ㄦ佹敞鍐屽箍鎾涓嶆槸甯搁┗鍨嫔箍鎾锛屼篃灏辨槸璇村箍鎾璺熼殢activity镄勭敓锻藉懆链熴傛敞镒: 鍦╝ctivity缁撴潫鍓嶏纴绉婚櫎骞挎挱鎺ユ敹鍣ㄣ
闱欐佹敞鍐屾槸甯搁┗鍨嬶纴涔熷氨鏄璇村綋搴旂敤绋嫔簭鍏抽棴钖庯纴濡傛灉链変俊鎭骞挎挱𨱒ワ纴绋嫔簭涔熶细琚绯荤粺璋幂敤镊锷ㄨ繍琛屻
瀹幂殑鐢熷懡锻ㄦ湡涓轰粠锲炶皟onReceive()鏂规硶寮濮嫔埌璇ユ柟娉曡繑锲炵粨鏋滃悗缁撴潫銆
2.褰揿箍鎾涓烘湁搴忓箍鎾镞讹细
1 浼桦厛绾ч珮镄勫厛鎺ユ敹
2 钖屼紭鍏堢骇镄勫箍鎾鎺ユ敹鍣锛屽姩镐佷紭鍏堜簬闱欐
3 钖屼紭鍏堢骇镄勫悓绫诲箍鎾鎺ユ敹鍣锛岄润镐侊细鍏堟壂鎻忕殑浼桦厛浜庡悗镓鎻忕殑锛屽姩镐侊细鍏堟敞鍐岀殑浼桦厛浜庡悗娉ㄥ唽镄勚
3. Android开发中广播的作用及注册方式,
广播是一种运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。广播既可以在清单文件AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。
4. Android注册广播有几种方式,分别是什么
注册方式有两种:
1、静态注册,就是在manifest文件里配置一下,这种方式注册的广播属于系统级广播。你的应用没打开也能收到广播。比如你要做一个收到某广播就启动你的应用的功能可以这样搞。
2、动态注册,在代码里执行一个rigisterBroadcastReciver(可能拼写有误)的方法。这种你要自己作好反注册。这种广播可以做成你的应用启动后才监听,关闭后就不监听的效果。
5. 注册广播有几种方式,这些方式有何优缺点请谈谈Android引入广播机制的用意。
android中,不同进程之间传递信息要用到广播,可以有两种方式来实现。
第一种方式:在Manifest.xml中注册广播,是一种比较推荐的方法,因为它不需要手动注销广播(如果广播未注销,程序退出时可能会出错)。
具体实现在Manifest的application中添加:上面两个android:name分别是广播名和广播的动作(这里的动作是表示系统启动完成),如果要自己发送一个广播,在代码中为:
Intent i = new Intent(“android.intent.action.BOOT_COMPLETED”);
sendBroadcast(i);
这样,广播就发出去了,然后是接收。
接收可以新建一个类,继承至BroadcastReceiver,也可以建一个BroadcastReceiver的实例,然后得写onReceive方法,实现如下:
protected BroadcastReceiver mEvtReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(“android.intent.action.BOOT_COMPLETED”)) {
//Do something
}
}
};
第二种方式,直接在代码中实现,但需要手动注册注销,实现如下:
IntentFilter filter = new IntentFilter();
filter.addAction(“android.intent.action.BOOT_COMPLETED”);
registerReceiver(mEvtReceiver, filter); //这时注册了一个recevier ,名为mEvtReceiver,然后同样用上面的方法以重写onReceiver,
最后在程序的onDestroy中要注销广播,实现如下:
@Override
public void onDestroy() {
super.onDestroy();
unregisterReceiver(mPlayerEvtReceiver);
}
6. 12、注册广播有几种方式,这些方式有何优缺点请谈谈Android引入广播机制的用意。
注册广播的分类:静态注册和动态注册。
静态注册:在清单文件里直接注册,从app开启到app销毁,一直在接收广播,接收广播时间长,但是接收广播的优先级低于动态注册广播。
动态注册:动态注册,动态销毁,从onCreate到取消注册,期间接收广播,接收广播时间是短且可控,接收广播的优先级高。例如:
发送广播:
Intent i = new Intent();
i.setAction("ACTION_CLOSE");
sendBroadcast(i);
接受广播:
onCreate(){
//注册广播的接受者
IntentFilter filter = new IntentFilter();
filter.addAction("ACTION_CLOSE_ACTIVITY");
receiver = new InnerReceiver();
registerReceiver(receiver, filter);
}
private class InnerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//TODO 当前Activity接收到广播 需要做的事情
}
}
}
//注销广播
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(receiver);
}
2.引入广播的原因:
a) 不同的app之间传信通用
b)发出一条指定,需要多个Activity都需要有反应
注意:以上仅供参考,如有疑问,请追问,谢谢。
7. android 注册广播有几种方式,这些方式有何优缺点
一般来说,一种是动态注册,即 用java代码直接注册,
如oncreate(){
this.registerreceiver(new yourbroadcast, Intenfilter i);
}
当然你也在其他如onstart里注册,看你的业务是什么要求了。取消注册在对应的方法里。
一般是对应的,oncreate-onDestroy onstart-onstop
另一种就是xml文件注册了。