Android 广播接收者BroadcastReceiver的两种注册方法
BroadcastReceiver示例
我们先实现一个简单的BroadcastReceiver
public class MyBroadcastReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        if (intent.getAction().equals("com.himmy.action.MY_BROADCAST_1")) {
            String from = intent.getStringExtra("from");
            Toast.makeText(context, from, Toast.LENGTH_SHORT).show();
        } else if (intent.getAction().equals("com.himmy.action.MY_BROADCAST_2")) {
            String from = intent.getStringExtra("from");
            Toast.makeText(context, from, Toast.LENGTH_SHORT).show();
        }
    }
}
在Minifest文件中声明注册
<receiver
    android:name=".MyBroadcastReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.himmy.action.MY_BROADCAST_1"/>
        <action android:name="com.himmy.action.MY_BROADCAST_2"/>
    </intent-filter>
</receiver>
在代码中注册
首先创建一个MyBroadcastReceiver对象
private MyBroadcastReceiver myBroadcastReceiver = new MyBroadcastReceiver();
然后注册广播接收者,可以在onCreate()、onStart()或者onResume()方法中注册
@Override
protected void onStart() {
    super.onStart();
    IntentFilter filter = new IntentFilter("com.himmy.action.MY_BROADCAST_1");
    filter.addAction("com.himmy.action.MY_BROADCAST_2");
    this.registerReceiver(myBroadcastReceiver, filter);
}
最后不用的话记得取消注册,可以在onPause()、onStop()或者onDestroy()方法中取消注册
@Override
protected void onStop() {
    super.onStop();
    unregisterReceiver(myBroadcastReceiver);
}
发送广播
因为上面例子我们监听的是自定义广播,所以我们可以在需要的地方发送广播,当接收到的时候会弹出一个toast
findViewById(R.id.send1).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent("com.himmy.action.MY_BROADCAST_1");
        intent.putExtra("from", "野猿新一");
        sendBroadcast(intent);
    }
});
findViewById(R.id.send1).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent("com.himmy.action.MY_BROADCAST_2");
        intent.putExtra("from", "野猿新二");
        sendBroadcast(intent);
    }
});
                    
                
                
            
        
浙公网安备 33010602011771号