你错过了对unregisterreceiver()的调用吗?

时间:2013-12-27 08:37:50

标签: android exception wifi

我为android创建了一个jar文件(库),它可以启动wifi并注册广播接收器,当活动停止库用户可以调用该函数并取消注册Receiver时,我已经提供了一个函数。

在库类构造函数中wifi broadcastReceiver注册如下。

broadcastReceiver = new WiFiScanReceiver(mWifiManager,mDesiredActRdrSSID);
        mActivity.registerReceiver(broadcastReceiver, new IntentFilter(WifiManager.SCAN_RESULTS_AVAILABLE_ACTION));
        broadcastReceiver.registerActRdrFoundEvent(this);

但是当我调用包含以下代码的断开连接函数时。

public void disconnect()
    {
        try
        {
        Log.e(TAG, "Disconnect....***");
        if(broadcastReceiver!= null)
            mActivity.unregisterReceiver(broadcastReceiver);
        broadcastReceiver = null;
        }
        catch(Exception e)
        {

        }
    }

但是当活动结束时它也会出错。

12-27 08:36:17.756: E/ActivityThread(23665): Activity com.example.carparking.MainActivity has leaked IntentReceiver com.android.accesscontrol.WiFiScanReceiver@41287400 that was originally registered here. Are you missing a call to unregisterReceiver()?
12-27 08:36:17.756: E/ActivityThread(23665): android.app.IntentReceiverLeaked: Activity com.example.carparking.MainActivity has leaked IntentReceiver com.android.accesscontrol.WiFiScanReceiver@41287400 that was originally registered here. Are you missing a call to unregisterReceiver()?
12-27 08:36:17.756: E/ActivityThread(23665):    at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:795)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:596)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1126)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1113)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1107)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:365)
12-27 08:36:17.756: E/ActivityThread(23665):    at com.android.accesscontrol.AccessControl.<init>(AccessControl.java:57)
12-27 08:36:17.756: E/ActivityThread(23665):    at com.example.carparking.MainActivity.buttonClicked(MainActivity.java:274)
12-27 08:36:17.756: E/ActivityThread(23665):    at java.lang.reflect.Method.invokeNative(Native Method)
12-27 08:36:17.756: E/ActivityThread(23665):    at java.lang.reflect.Method.invoke(Method.java:511)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.view.View$1.onClick(View.java:3598)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.view.View.performClick(View.java:4106)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.view.View$PerformClick.run(View.java:17150)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.os.Handler.handleCallback(Handler.java:615)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.os.Handler.dispatchMessage(Handler.java:92)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.os.Looper.loop(Looper.java:137)
12-27 08:36:17.756: E/ActivityThread(23665):    at android.app.ActivityThread.main(ActivityThread.java:4793)
12-27 08:36:17.756: E/ActivityThread(23665):    at java.lang.reflect.Method.invokeNative(Native Method)
12-27 08:36:17.756: E/ActivityThread(23665):    at java.lang.reflect.Method.invoke(Method.java:511)
12-27 08:36:17.756: E/ActivityThread(23665):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:808)
12-27 08:36:17.756: E/ActivityThread(23665):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:575)
12-27 08:36:17.756: E/ActivityThread(23665):    at dalvik.system.NativeStart.main(Native Method)

任何人都可以帮助我吗? 我做错了什么?这个函数在“.jar”文件中提供。

0 个答案:

没有答案