Android 销毁onResume()中的广播接收器

Android 销毁onResume()中的广播接收器,android,broadcastreceiver,Android,Broadcastreceiver,我的MainActivity中有onResume()和onDestroy()方法。如何在onResume()方法中确定registerReceiver。我试图将其分配给变量,但没有成功 @覆盖 受保护的void onResume(){ registerReceiver(新广播接收器(){ @凌驾 公共void onReceive(上下文、意图){ 检查无线网络是否可用(); } },新的IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION

我的MainActivity中有onResume()和onDestroy()方法。如何在onResume()方法中确定registerReceiver。我试图将其分配给变量,但没有成功

@覆盖
受保护的void onResume(){
registerReceiver(新广播接收器(){
@凌驾
公共void onReceive(上下文、意图){
检查无线网络是否可用();
}
},新的IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
super.onResume();
}
@凌驾
受保护的空onDestroy(){
取消注册接收者();
super.ondestory();

}
来自android文档:

如果在Activity.onResume()实现中注册接收者, 您应该在Activity.onPause()中注销它。(你不会收到 暂停时的意图,这将减少不必要的系统开销 开销)

将receiver定义为类变量,如下所示:

private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 @Override 
 public void onReceive(Context context, Intent intent) {
     check_wifi_available(); 
   } 
 } 
@Override 
protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(mReceiver);
 }  
然后实现onPause()/onResume()方法,如下所示:

private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 @Override 
 public void onReceive(Context context, Intent intent) {
     check_wifi_available(); 
   } 
 } 
@Override 
protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(mReceiver);
 }  

无需在onDestroy()方法中注销它。

来自android文档:

如果在Activity.onResume()实现中注册接收者, 您应该在Activity.onPause()中注销它。(你不会收到 暂停时的意图,这将减少不必要的系统开销 开销)

将receiver定义为类变量,如下所示:

private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 @Override 
 public void onReceive(Context context, Intent intent) {
     check_wifi_available(); 
   } 
 } 
@Override 
protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(mReceiver);
 }  
然后实现onPause()/onResume()方法,如下所示:

private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 @Override 
 public void onReceive(Context context, Intent intent) {
     check_wifi_available(); 
   } 
 } 
@Override 
protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(mReceiver);
 }  

无需在onDestroy()方法中注销它。

来自android文档:

如果在Activity.onResume()实现中注册接收者, 您应该在Activity.onPause()中注销它。(你不会收到 暂停时的意图,这将减少不必要的系统开销 开销)

将receiver定义为类变量,如下所示:

private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 @Override 
 public void onReceive(Context context, Intent intent) {
     check_wifi_available(); 
   } 
 } 
@Override 
protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(mReceiver);
 }  
然后实现onPause()/onResume()方法,如下所示:

private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 @Override 
 public void onReceive(Context context, Intent intent) {
     check_wifi_available(); 
   } 
 } 
@Override 
protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(mReceiver);
 }  

无需在onDestroy()方法中注销它。

来自android文档:

如果在Activity.onResume()实现中注册接收者, 您应该在Activity.onPause()中注销它。(你不会收到 暂停时的意图,这将减少不必要的系统开销 开销)

将receiver定义为类变量,如下所示:

private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 @Override 
 public void onReceive(Context context, Intent intent) {
     check_wifi_available(); 
   } 
 } 
@Override 
protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(mReceiver);
 }  
然后实现onPause()/onResume()方法,如下所示:

private BroadcastReceiver mReceiver = new BroadcastReceiver() { 
 @Override 
 public void onReceive(Context context, Intent intent) {
     check_wifi_available(); 
   } 
 } 
@Override 
protected void onResume() { 
     super.onResume(); 
     registerReceiver(mReciever, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    unregisterReceiver(mReceiver);
 }  

无需在onDestroy()方法中注销它。

在类的属性中定义接收器:

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
     @Override
    public void onReceive(Context context, Intent intent) {

    }
};
这些方法包括:

@Override
public void onResume() {
    super.onResume();
    registerReceiver(broadcastReceiver, new IntentFilter("your package name"));
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(broadcastReceiver);
}

在类的属性中定义接收者:

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
     @Override
    public void onReceive(Context context, Intent intent) {

    }
};
这些方法包括:

@Override
public void onResume() {
    super.onResume();
    registerReceiver(broadcastReceiver, new IntentFilter("your package name"));
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(broadcastReceiver);
}

在类的属性中定义接收者:

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
     @Override
    public void onReceive(Context context, Intent intent) {

    }
};
这些方法包括:

@Override
public void onResume() {
    super.onResume();
    registerReceiver(broadcastReceiver, new IntentFilter("your package name"));
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(broadcastReceiver);
}

在类的属性中定义接收者:

private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
     @Override
    public void onReceive(Context context, Intent intent) {

    }
};
这些方法包括:

@Override
public void onResume() {
    super.onResume();
    registerReceiver(broadcastReceiver, new IntentFilter("your package name"));
}

@Override
protected void onPause() {
    super.onPause();
    unregisterReceiver(broadcastReceiver);
}


您所说的“销毁registerReceiver”是什么意思?是否不需要销毁或暂停它?我想我必须像在BroadcastReceiver类中那样做。你说的“销毁registerReceiver”是什么意思?没有必要销毁它或暂停它吗?我想我必须像在BroadcastReceiver类中那样做。你说的“销毁registerReceiver”是什么意思?没有必要销毁它或暂停它吗?我想我必须像在BroadcastReceiver类中那样做。你说的“销毁registerReceiver”是什么意思?没有必要销毁它或暂停它吗?我想我必须在BroadcastReceiver类中这样做。我应该在哪里定义类变量mRceiver?在onCreate()方法中?在onCreate中或直接在类中,在任何方法之外:“private BroadcastReceiver mReceiver=[…]”@MrAsker您只能将一个答案作为正确答案。您能帮我一下吗?如果我调用该方法“check_wifi_available()”,我不会得到结果如果我从“onLocationChanged”方法调用它,那么从onReceive方法来看,该方法工作得很好?我不必在manifest.xml文件中添加任何内容?@MrAsker我建议您在stackoverflow上发布另一个问题,并将此问题标记为已解决。在这里发布一个链接,我来看看。我应该在哪里定义类变量mRceiver?在onCreate()方法中?在onCreate中或直接在类中,在任何方法之外:“private BroadcastReceiver mReceiver=[…]”@MrAsker您只能将一个答案作为正确答案。您能帮我一下吗?如果我调用该方法“check_wifi_available()”,我不会得到结果如果我从“onLocationChanged”方法调用它,那么从onReceive方法来看,该方法工作得很好?我不必在manifest.xml文件中添加任何内容?@MrAsker我建议您在stackoverflow上发布另一个问题,并将此问题标记为已解决。在这里发布一个链接,我来看看。我应该在哪里定义类变量mRceiver?在onCreate()方法中?在onCreate中或直接在类中,在任何方法之外:“private BroadcastReceiver mReceiver=[…]”@MrAsker您只能将一个答案作为正确答案。您能帮我一下吗?如果我调用该方法“check_wifi_available()”,我不会得到结果如果我从“onLocationChanged”方法调用它,那么从onReceive方法来看,该方法工作得很好?我不必在manifest.xml文件中添加任何内容?@MrAsker我建议您在stackoverflow上发布另一个问题,并将此问题标记为已解决。在这里发布一个链接,我来看看。我应该在哪里定义类变量mRceiver?在onCreate()方法中?在onCreate中或直接在类中,在任何方法之外:“private BroadcastReceiver mReceiver=[…]”@MrAsker您只能将一个答案作为正确答案。您能帮我一下吗?如果我调用该方法“check_wifi_available()”,我不会得到结果如果我从“onLocationChanged”方法调用它,那么从onReceive方法来看,该方法工作得很好?我不必在manifest.xml文件中添加任何内容?@MrAsker我建议您在stackoverflow上发布另一个问题,并将此问题标记为已解决。在这里贴一个链接,我来看看。