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);
    }
});
发布了287 篇原创文章 · 获赞 44 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/mqdxiaoxiao/article/details/103728651