Android 广播

xiaoxiao2021-07-06  414

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); } }
转载请注明原文地址: https://www.6miu.com/read-4821482.html

最新回复(0)