Android 调用onDestroy函数时接收器未注册错误

Android 调用onDestroy函数时接收器未注册错误,android,broadcastreceiver,Android,Broadcastreceiver,当我创建扩展brodcastereceiver并注册它的类时。 错误无法销毁活动,接收器未注册:调用unregisterReceiver时MainActivity中的nullonDestroy()函数 onCreate(): onDestroy(): ConnectionChangeReceiver类: public class ConnectionChangeReceiver extends BroadcastReceiver { @Override public void o

当我创建扩展brodcastereceiver并注册它的类时。 错误
无法销毁活动,接收器未注册:调用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)
a
try 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是的,它可以工作您可以在清单中注册它:我可以,但仍然不工作我添加register
onStart
和unregister
onStop
,但仍然不工作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>