我无法停止接收广播

I can't stop receiving broadcasts

我无法停止接收广播。为什么?

这是我的代码:

public class MainActivity extends AppCompatActivity {

    BroadcastReceiver br = new CustomReceiver();
    IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        BroadcastReceiver br = new CustomReceiver();
        filter.addAction(Intent.ACTION_POWER_CONNECTED);
        filter.addAction(Intent.ACTION_POWER_DISCONNECTED);
        this.registerReceiver(br, filter);
    }

    @Override
    protected void onStart() {
        super.onStart();
        if(!br.isOrderedBroadcast())
            this.registerReceiver(br, filter);
    }

    @Override
    protected void onStop() {
        super.onStop();
        if(br.isOrderedBroadcast())
            this.unregisterReceiver(br);
    }

    @Override
    protected void onPause() {
        super.onPause();
        if(br.isOrderedBroadcast())
            this.unregisterReceiver(br);
    }

    @Override
    protected void onResume() {
        super.onResume();

        if(!br.isOrderedBroadcast())
            this.registerReceiver(br, filter);
    }

    @Override
    protected void onDestroy() {

        super.onDestroy();

        if(br.isOrderedBroadcast())
            this.unregisterReceiver(br);
    }
}

public class CustomReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {

        String intentAction = intent.getAction();
        String toastMessage = "TOAST";

        switch (intentAction){
            case Intent.ACTION_POWER_CONNECTED:
                toastMessage="Power Connected!";
                break;
            case Intent.ACTION_POWER_DISCONNECTED:
                toastMessage="Power Disconnected!";
                break;
        }
        Toast.makeText(context, toastMessage, Toast.LENGTH_SHORT).show();
    }
}

当我转到 onPause()onStop() 时,应用程序继续显示连接和断开充电的消息。不知道为什么。

我的猜测是条件(您在 onPause()onStop() 中使用)br.isOrderedBroadcast()false 所以 CustomReceiver 不会得到未注册。

此外,根据文档,you should register/unregister CustomReceiveronCreate()/onDestroy()onResume()/onPause() 中。