一、静态和动态广播
1.动态注册:代码中注册
2.静态注册:在AndroidManifest.xml配置文件中注册
* 动态注册:
* 1.new 一个广播类
* 2.new一个intentFilter类,参数是广播指令,注册广播
* 3.发送广播,设置:广播指令,内容,发送
* 4.广播类收到广播:做出反应
* 5.页面销毁时,注销广播
*
* * 静态注册:
* 1.快捷方式new 一个广播类,AndroidManifest.xml文件中会自动注册广播
* 2.在广播中添加一个过滤器,添加指令
* <intent-filter>
<action android:name="指令2"/>
</intent-filter>
* 3.发送广播,设置:广播指令,内容,发送
* 4.广播类收到广播:做出反应
动态注册的方式:
步骤:
代码如下:
public class MainActivity extends AppCompatActivity { static final String TAG = "11111"; Button bt; MyBroadCast myBroadCast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //3.发送广播,广播指令,内容,发送 Intent intent = new Intent(); intent.setAction("指令1"); intent.putExtra("内容","杀敌"); sendBroadcast(intent); } }); //2.new一个intentFilter类,参数是广播指令,注册广播 IntentFilter filter = new IntentFilter("指令1"); myBroadCast = new MyBroadCast(); registerReceiver(myBroadCast,filter); } /* * 页面销毁时,注销广播,避免内存泄漏(属于内存优化) * */ @Override protected void onDestroy() { super.onDestroy(); unregisterReceiver(myBroadCast); } //1.new 一个广播类 class MyBroadCast extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { //4.收到广播 Log.d(TAG,intent.getAction()+","+intent.getStringExtra("内容")); } } }
打印结果:11111: 指令1,杀敌
静态注册的方式
1.通过以下步骤,可以快捷生成MyReceiver.java文件:
public class MyReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Log.d(MainActivity.TAG,intent.getAction()+","+intent.getStringExtra("内容"));
}
}
2.然后清单文件中自动会生成广播,添加广播指令
只需要在广播中添加一个指令 <receiver android:name=".MyReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="指令2"/> </intent-filter> </receiver>
3.MainActivity 发送广播
public class MainActivity extends AppCompatActivity { static final String TAG = "11111"; Button bt; MyBroadCast myBroadCast; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = findViewById(R.id.bt); bt.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //3.发送广播,广播指令,内容,发送 Intent intent = new Intent(); intent.setAction("指令2"); intent.putExtra("内容","收兵"); sendBroadcast(intent); } }); } }
打印内容:指令2,收兵