Android四大组件之BroadCast
2015-01-21 16:23
603 查看
1.什么是广播?1).BroadCast是android提供跨进程通信的一个框架。2).同时broadcast是观察者模式的一种设计。在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver活动(Activity) - 用于表现功能服务(Service) - 相当于后台运行的 Activity广播(Broadcast) - 用于发送广播广播接收器(BroadcastReceiver) - 用于接收广播Intent - 用于连接以上各个组件,并在其间传递消息2.广播的种类?1). activity.sendbroadcast普通广播,在广播发送以后,可以同时接收广播(逻辑上)。2). activity.sendorderbroadcast有序广播将按优先级依次传递广播。前面的广播可以终止广播,并且可以把值传递给后面的接受者。对于OrderedBroadcast而言,系统会根据接收者生命的优先级别顺序逐个执行接收者,优先接收到Broadcast的接收者可以终止 Broadcast,调用BroadcastReceiver的abortBroadcast()方法即可终止Broadcast。如果 Broadcast被前面的接收者终止,后面的接收者就再也无法获取到Broadcast3.如何发送广播?发送广播可以通过:activity.sendbroad
<receiver android:name="com.joyfulmath.globalsearch.imagesearch.service.provider.ImageSearchReceiver" android:exported="false" > <intent-filter> <action android:name="com.joyfulmath.intent.action.REBUILDIMAGE" /> </intent-filter> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> </intent-filter> </receiver>
<intent-filter> 是broadcast receiver监听的广播。 本列监听
com.joyfulmath.intent.action.REBUILDIMAGE 和android.intent.action.BOOT_COMPLETED 两种广播。
com.joyfulmath.globalsearch.imagesearch.service.provider.ImageSearchReceiver是广播响应的类:
package com.joyfulmath.globalsearch.imagesearch.service.provider; import com.joyfulmath.globalsearch.imagesearch.service.ImageSearchBuildService; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.util.Log; public class ImageSearchReceiver extends BroadcastReceiver { public final static String TAG = "ImageSearch.Receiver"; public final static String BUILD_SEARCH_IMAGE_ACTION = "com.joyfulmath.intent.action.REBUILDIMAGE"; @Override public void onReceive(Context context, Intent intent) { String actionStr = intent.getAction(); if(actionStr.equals(BUILD_SEARCH_IMAGE_ACTION)) { Log.i(TAG, "[onReceive]start rebuild all database"); //rebuild and update are all running in service! startCustomService(context); } else if(actionStr.equals("android.intent.action.BOOT_COMPLETED")) { Log.i(TAG, "[onReceive]start servie BOOT_COMPLETED"); Intent intentservice = new Intent(); intentservice.setAction(ImageSearchBuildService.ACTION); context.startService(intentservice); } } private void startCustomService(Context context) { Intent intent = new Intent(); intent.setAction(ImageSearchBuildService.ACTION); intent.putExtra(ImageSearchBuildService.ACTION_METHOD, ImageSearchBuildService.ACTION_REBUILD_DB); context.startService(intent); } }
ImageSearchReceiver 会在接受到广播的时候,启动onReceive回调。 此处onReceive运行在主线程! 静态注册可以是activity或者service发送的广播。 而动态广播则正好相反。当动态广播注册时,接收广播,而注销时,无法接收广播。
MyReceiver receiver = new MyReceiver(); IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.MY_BROADCAST"); registerReceiver(receiver, filter);
动态广播一般用于一只app内部,而静态注册则是监听系统广播或者长期广播。 我们可以在监听某些操作的时候,启动service。 比如开机自启动程序。
相关文章推荐
- Android四大组件之Broadcast
- [置顶] Android四大组件之BroadcastReceiver
- android开发步步为营之38:四大组件之BroadcastReceiver接收广播
- Android四大基本组件(1)之Activity与BroadcastReceive广播接收器
- 【Android基础】(3)四大核心组件之BroadcastReceiver
- android四大组件之BroadcastReceiver
- Android四大组件之BroadcastReceiver
- Android 四大组件之 Broadcast
- Android四大组件之BroadcastReceiver(2)
- Android 四大组件之 BroadcastReceiver
- Android 四大组件(Activity、Service、BroadCastReceiver、ContentProvider)
- 15_Android四大组件:Activity 、Service、Broadcast receiver 、Content provider
- 【Android基础入门〖5〗】四大组件之BroadcastReceiver
- android四大组件之BroadcastReceiver
- Android四大组件Activity、service、Content Provider、BroadCast Receiver
- Android四大组件之BroadcastReceiver
- Android四大组件之Broadcast Receiver
- Android有四大组件:Activity、Service、Broadcast Receiver、Content Provider。
- Android四大基本组件(Activity,Service,Content Provider 和 BroadcastReceiver)
- Android 四大组件 之 Broadcast/Receiver 流程