广播也是通过intent来传递的。

广播分为有序广播和标准广播。

标准广播是发送广播后,所有的广播接受者都可以去接收。

有序广播是发送广播后,由高优先级的先接收广播,处理后再往后广播,同时高优先级的接受者可以中断广播。


广播注册可以分为动态注册和静态注册。下面就先将静态注册。静态注册是新建广播接收者时,是通过new----->other------->Brodcast Receiver来实现的。AS会自动帮我们在Manifext.xml里注册好,我们只需要添加intent-filter及在里面加入action即可。


下面的例子是静态注入,发送一条标准广播,然后接收。


1、MainActivity

packagecom.yuanlp.sendbroadcast;importandroid.content.Intent;importandroid.os.Bundle;importandroid.support.v7.app.AppCompatActivity;importandroid.view.View;publicclassMainActivityextendsAppCompatActivity{@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}publicvoidclick(Viewview){Intentintent=newIntent("com.yuanlp.sendBroadcast.MY_BROADCAST");//设置intent的actionsendBroadcast(intent);//发送广播}}

2、 activity_main.xml里

<?xmlversion="1.0"encoding="utf-8"?><android.support.constraint.ConstraintLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context="com.yuanlp.sendbroadcast.MainActivity"><Buttonandroid:id="@+id/button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:onClick="click"android:text="发送广播"tools:layout_editor_absoluteX="137dp"tools:layout_editor_absoluteY="136dp"/></android.support.constraint.ConstraintLayout>

3、MyReceiver

packagecom.yuanlp.sendbroadcast;importandroid.content.BroadcastReceiver;importandroid.content.Context;importandroid.content.Intent;importandroid.widget.Toast;publicclassMyReceiverextendsBroadcastReceiver{@OverridepublicvoidonReceive(Contextcontext,Intentintent){Toast.makeText(context,"接收到广播",Toast.LENGTH_SHORT).show();}}

4、Manifext.xml

<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="http://schemas.android.com/apk/res/android"package="com.yuanlp.sendbroadcast"><applicationandroid:allowBackup="true"android:icon="@mipmap/ic_launcher"android:label="@string/app_name"android:roundIcon="@mipmap/ic_launcher_round"android:supportsRtl="true"android:theme="@style/AppTheme"><activityandroid:name=".MainActivity"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><receiverandroid:name=".MyReceiver"android:enabled="true"android:exported="true"><intent-filter><actionandroid:name="com.yuanlp.sendBroadcast.MY_BROADCAST"></action></intent-filter></receiver></application></manifest>

运行程序后,在点击按钮后,自定义的广播 接受者会受到广播,并弹出toast