一,发送广播

利用Intent来发送广播。


使用:在需要发送广播的地方创建一个Intent对象,将信息的内容和用于过滤的信息封装起来,通过以下三种方法将Intent广播出去:


1,Context.sendBroadcast

2,Context.sendOrderedBroadCast

3,Context.sendStickyBroadcast

三种方法的区别:


1sendBroadcastsendStickyBroadcast发送出去的Intent,对于所有满足条件的BroadcastReceiver都会执行其onReceive方法。但若有多个满足条件的BroadcastReceiver,其执行onReceive方法的顺序是没有保证的。

2,通过sendOrderedBroadCast方法发送出去的Intent,会根据BroadcastReceiver注册时IntentFilter设置的优先级的顺序来执行onReceive方法,相同优先级的BroadcastReceiver执行onReceive方法的顺序是没有保证的。

其中,sendStickyBroadcast主要的不同时,Intent在发送后会一直存在,并且在以后调用registerReceiver注册相匹配的Receiver时会把这个Intent对象直接返回给新注册的Receiver

通常我们在发送广播时候,使用的是sendBroadcast,但需要注意的是,在构造Intent时,必须用一个全局唯一的字符串标示其要执行的动作,通常使用应用程序的包名称,也可以采用自己定义的动作。如果要在Intent中传递其他数据,可以用IntentputExtra方法。

String Intent_Activity="lhc";

Intent intent=newIntent(Intent_Activity)

Intent.putExtra("参数",“参数值”);

sendBroadcast(intent);




二,接收广播


在于Activity相同的包下面定义广播器。广播器类要继承BroadcastReceiver类。

但是在接收到广播之后,要想处理相关事件,我们必须覆盖其OnReceiver方法,在该方法中实现对广播事件的相关处理,当安卓系统接收到与之匹配的广播消息时,会自动启动此BroadcastReceiver开始接受广播。

注意的是:OnReceive方法必须在5秒钟内执行完成,否则安卓系统会认为该组建失去响应,并提示用户强行关闭该组件。因此对于比较耗时的操作,要单独开一个线程。



三,声明广播


两种广播的注册方式:


1,代码注册广播

2,在AndroidMainfest.xml中注册

两种注册类型的区别:

1,第一种不是常驻型广播,也就是广播跟随程序的生命周期;

2,第二种是常驻类型的广播,也就是说当应用程序关闭后,如果有信息广播过来,程序广播接收器也会被系统调用自动运行。


四,示例


1,发送广播

public class BroadCastActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=(Button)super.findViewById(R.id.button);button.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0) {String Intent_Action="com.example.broadcastdemp";Intent intent=new Intent(Intent_Action); //sendBroadcast(intent);//发送广播,并传递intentLog.e("BroadcastReceiver","sendbroadcast");}});}

2,接收广播


public class BroadcastReceiverActivity extends BroadcastReceiver{@Overridepublic void onReceive(Context arg0, Intent arg1) {String Intent_Action=arg1.getAction();if("com.example.broadcastdemp".equals(Intent_Action)){Log.e("BroadcastReceiver","onReceive");}}}


4,使用XML配置接收广播的类


  <receiver android:name=".BroadcastReceiverActivity">            <intent-filter>                <action android:name="com.example.broadcastdemp"/>            </intent-filter>        </receiver>



run下看看:











更多相关文章

  1. Unity3D与android交互
  2. Android之使用AchartEngineActivity引擎绘制柱状图、曲线图
  3. android OTA差分包的生成方法
  4. multipart/form-data图片上传实现方法
  5. Android(安卓)解决adb server is out of date. killing... ADB s
  6. android AndroidManifest.xml文件解析
  7. Android(安卓)自定义LayoutManager
  8. Android(安卓)inflate的三种使用方法
  9. 【Android(安卓)界面效果43】Android(安卓)LayoutInflater的infl

随机推荐

  1. Android(安卓)如何在ListView中嵌套ListV
  2. Android(安卓)侧边栏开发的方法
  3. Android(安卓)静默安装和智能安装的实现
  4. Google開設Android線上教學課程
  5. Android中适用于ListView、GridView等组
  6. android 接触
  7. Android(安卓)总结4种线程中操作UI界面的
  8. Android(安卓)的进程与线程
  9. 本人自学Android技术
  10. android 模拟器和电脑服务器端用socket通