Weird “Receiver not registered” exception

前端 未结 5 728
耶瑟儿~
耶瑟儿~ 2021-01-03 19:22

In onResume() I do:

registerReceiver(timeTickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));

and in onPause():

unregi         


        
5条回答
  •  自闭症患者
    2021-01-03 19:48

    A BroadcastReceiver should be registered in the onCreate() lifecycle method:

    private BroadcastReceiver receiver;
    
    @Overrride
    public void onCreate(Bundle savedInstanceState){
        IntentFilter filter = new IntentFilter();
    
        receiver = new BroadcastReceiver() {
            @Override
            public void onReceive(Context context, Intent intent) {
                ...
            }
        }
    
        registerReceiver(receiver, filter);
    }    
    

    And a BroadcastReceiver should be unregistered in the onDestory() lifecycle method:

    @Override
    protected void onDestroy() {
        unregisterReceiver(receiver);
    }
    

    This will prevent the scenario of unregistering a BroadcastReceiver that has not yet been registered.

提交回复
热议问题