本地广播只能在应用程序内部进行传递,并且只能通过动态注册在代码里进行注册,下面我们来看看使用方法:
1.本地广播的定义
private class LocalBroadcastTest extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "this is localbroadcast", Toast.LENGTH_LONG).show();
}
}
2.在onCreate方法中注册广播
IntentFilter intentFilter = new IntentFilter();
localBroadcastTest = new LocalBroadcastTest();
intentFilter.addAction("com.example.testijk.LOCAL_BROADCAST");
localBroadcastManager.registerReceiver(localBroadcastTest, intentFilter);
3.发送广播
Intent intent = new Intent("com.example.testijk.LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent);
4.在onDestroy方法中解绑
localBroadcastManager.unregisterReceiver(localBroadcastTest);
最后是完整源码
public class MainActivity extends AppCompatActivity {
private LocalBroadcastTest localBroadcastTest;
private LocalBroadcastManager localBroadcastManager;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
localBroadcastManager = LocalBroadcastManager.getInstance(this);
Button btnSend = findViewById(R.id.btn_send);
btnSend.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent("com.example.testijk.LOCAL_BROADCAST");
localBroadcastManager.sendBroadcast(intent);
}
});
IntentFilter intentFilter = new IntentFilter();
localBroadcastTest = new LocalBroadcastTest();
intentFilter.addAction("com.example.testijk.LOCAL_BROADCAST");
localBroadcastManager.registerReceiver(localBroadcastTest, intentFilter);
}
private class LocalBroadcastTest extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "this is localbroadcast", Toast.LENGTH_LONG).show();
}
}
@Override
protected void onDestroy() {
super.onDestroy();
localBroadcastManager.unregisterReceiver(localBroadcastTest);
}
}
本文详细介绍了如何在Android应用程序中使用本地广播。包括本地广播的定义、动态注册、发送与接收广播的方法,以及在Activity生命周期中正确注册与解绑广播接收器的实践。

1865

被折叠的 条评论
为什么被折叠?



