Android 销毁onResume()中的广播接收器
我的MainActivity中有onResume()和onDestroy()方法。如何在onResume()方法中确定registerReceiver。我试图将其分配给变量,但没有成功Android 销毁onResume()中的广播接收器,android,broadcastreceiver,Android,Broadcastreceiver,我的MainActivity中有onResume()和onDestroy()方法。如何在onResume()方法中确定registerReceiver。我试图将其分配给变量,但没有成功 @覆盖 受保护的void onResume(){ registerReceiver(新广播接收器(){ @凌驾 公共void onReceive(上下文、意图){ 检查无线网络是否可用(); } },新的IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION
@覆盖
受保护的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上发布另一个问题,并将此问题标记为已解决。在这里贴一个链接,我来看看。