Android 广播
程序员文章站
2024-03-24 23:36:10
...
Android进阶--广播
广播机制概述
Android 广播分为两个方面,广播发送者和广播接收者,通常情况下BroadcastReceiver指的就是广播接收者。
广播作为Android组件间的通讯方式,可以使用的场景如下:
1.同一App内部的同一组件之间的消息通讯,单个或多个线程之间。
2.同一App内部不同组件之间的消息通讯。
3.不同App之间的组件之间消息通讯。
4.Android系统在特定情况下与App之间消息通信。
自定义BroadcastReceiver
自定义广播接收器需要继承基类BroadcastReceiver,并实现抽象方法onReceive(context,context)方法。广播接收器接收到相应广播后,会自动回到onReceiver(…)方法。
public class MyBroadercastReceiver extends BroadcastReceiver{
public static final String TAG="MyBroadcastRececiver";//名称
@Override
public void onReceive(Context context,Intent intent) {
String name=intent.getStringExtra("name");
Log.e(TAG,"name:"+name);
}
}
BroadcastReceiver注册类型
总体可以分为两中注册类型,静态注册和动态注册。
1.静态注册
<receiver android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:process="string" >
. . .
</receiver>
android:name --此broadcastReceiver类名
android:permission --如果设置,具有相应权限的广播发送方发送的广播才能被此broadcastReceiver所接受
常见的注册形式:
<receiver android:name=".MyBroadcastReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
2.动态注册:
动态注册时,无须再AndroidManifest中注册《receiver/》组件。直接在代码中通过调用Context的registerReceiver函数,可以在程序中动态注册
public class MainActivity extends Activity {
public static final String BROADCAST_ACTION = "com.example.corn";
private BroadcastReceiver mBroadcastReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mBroadcastReceiver = new MyBroadcastReceiver();
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(BROADCAST_ACTION);
registerReceiver(mBroadcastReceiver, intentFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(mBroadcastReceiver);
}
}
上一篇: 异常处理机制