Android 调用onDestroy函数时接收器未注册错误
当我创建扩展brodcastereceiver并注册它的类时。 错误Android 调用onDestroy函数时接收器未注册错误,android,broadcastreceiver,Android,Broadcastreceiver,当我创建扩展brodcastereceiver并注册它的类时。 错误无法销毁活动,接收器未注册:调用unregisterReceiver时MainActivity中的nullonDestroy()函数 onCreate(): onDestroy(): ConnectionChangeReceiver类: public class ConnectionChangeReceiver extends BroadcastReceiver { @Override public void o
无法销毁活动,接收器未注册:调用unregisterReceiver时MainActivity中的null
onDestroy()函数
onCreate():
onDestroy():
ConnectionChangeReceiver类:
public class ConnectionChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive( Context context, Intent intent )
{
Toast.makeText(context, "CONN", Toast.LENGTH_SHORT).show();
}
}
清单:更新:
添加
我总是
在onStart
中注册
接收器,并在onStop
中注销它。多亏了这个答案,我知道了这一点:
如果它在您的案例中仍然不起作用,只需包装unregisterReceiver(connectionChangeReceiver)
atry catch
block就是答案,正如我在上面发布的链接中所述
或者您可以在清单
中注册,例如:
<receiver android:name=".ConnectionChangeReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
看看这个。您是否在其他地方注销,是否可能再次注销?您是否暂停(并且在onPause()中有注销代码),然后再次启动,但忘记将寄存器放入onResume()中?是否确实正在注册接收器?您的AndroidManifest.xml中是否有正确的
设置?@Squonk@mamrezo:Hmm,好的。接收器工作吗?换句话说,当网络发生变化时,您是否看到Toast
?@Squonk是的,它可以工作您可以在清单中注册它:我可以,但仍然不工作我添加registeronStart
和unregisteronStop
,但仍然不工作working@mamrezo在清单
@mamrezo中注册时是否有任何错误消息抱歉,只是为了确保:当您在清单中声明java
时,应该删除register
和unregister
的code。你做到了吗?当我在没有类的情况下使用BroadcastReceiver
时效果很好,但是当我创建扩展BroadcastReceiver
的类时,我有这个错误
public class ConnectionChangeReceiver extends BroadcastReceiver
{
@Override
public void onReceive( Context context, Intent intent )
{
Toast.makeText(context, "CONN", Toast.LENGTH_SHORT).show();
}
}
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.mamrezo.mapapp" >
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.mamrezo.mapapp.MainActivity"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".ConnectionChangeReceiver" >
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
</intent-filter>
</receiver>
</application>
</manifest>
<receiver android:name=".ConnectionChangeReceiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>