Android20_广播机制(一)
16lz
2021-01-23
一、Android广播机制介绍
Android:操作系统
二、BroadcastReceiver的作用 每一个BroadcastReceiver都是用来处理不同的事件对象的,Android操作系统产生一个事件的时候,Android就会通知所有BroadcastReceiver产生一个事件,每个BroadcastReceiver就会判断是否是事件是否是自己要处理的事件,如果是当前BroadcastReceiver的事件,才会接收。指明每一个BroadcastReceiver是处理哪个事件,注册到Android操作系统上去主要是在AndroidManifest.xml中设置(是在application标签内)。
<receiver android:name=".TestBroadcastReceiver"><intent-filter><action android:name="android.intent.action.EDIT"/></intent-filter></receiver>Receiver标签的android:name属性表示将哪一个BroadcastReceiver注册到操作系统上面,filter标签上表示当前BroadcastReceiver是处理哪一类的事件动作的。 Action指的是当前操作是什么类型,即处理数据的方法。data表示将要操作的数据。要想把广播发送出去必须调用sendBroadcast方法。
三、BroadcastReceiver的编写 一个小例子,在BroadcastReceiverActivity中有个按钮,点击发送一个广播,同时在TestBroadcastReceiver中接收。
BroadcastReceiverActivity.java ——发送广播
package com.android.activity;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class BroadcastReceiverActivity extends Activity {private Button broadcast = null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); broadcast = (Button)findViewById(R.id.broadcast); broadcast.setText("测试广播机制"); broadcast.setOnClickListener(new BroadcastListener()); } class BroadcastListener implements OnClickListener{public void onClick(View v) {Intent intent = new Intent();intent.setAction(Intent.ACTION_EDIT);BroadcastReceiverActivity.this.sendBroadcast(intent);} }}TestBroadcastReceiver.java ——接收广播
package com.android.activity;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class TestBroadcastReceiver extends BroadcastReceiver {public TestBroadcastReceiver() {System.out.println("TestBroadcastReceiver");}@Overridepublic void onReceive(Context context, Intent intent) {System.out.println("TestBroadcastReceiver --> onReceive");}}AndroidManifest.xml ——注册接收广播类型
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.activity" android:versionCode="1" android:versionName="1.0"> <uses-sdk android:minSdkVersion="10" /><application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".BroadcastReceiverActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity><receiver android:name=".TestBroadcastReceiver"><intent-filter><action android:name="android.intent.action.EDIT"/></intent-filter></receiver> </application></manifest>输出结果:
四、 BroadcastReceiver 的生命周期
TestBroadcastReceiver对象一旦生成就会调用该对象的onReceive方法,当方法返回时该对象就变成垃圾对象了,当再次发送广播时会重新声明TestBroadcastReceiver对象。
更多相关文章
- Android: Android Touch事件处理
- android 事件处理机制
- Android面面观——Android事件处理下(按键、触摸屏和滚动球的一些
- FregServer进程,获取ServiceManager代理对象
- 2011.07.19——— android intent 传递list或者对象
- Android应用程序键盘(Keyboard)消息处理机制分析(26)
- 在Android中,如何通过onTouchEvent实现Double Click,判断为双击事