缺少一个电话注销,我从来没有注册HapticFeedbackBroadcastReceiver接收器 [英] Missing a call to unregister HapticFeedbackBroadcastReceiver receiver that I never registered

查看:177
本文介绍了缺少一个电话注销,我从来没有注册HapticFeedbackBroadcastReceiver接收器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我收到以下错误

  

是否缺少一个电话注销接收器

当我击中背部按钮退出我的申请。如何识别哪些接收机造成泄漏和消除错误?我现在用的是code下载从谷歌下载扩展文件。

  10-27 22:13:32.818:E / ActivityThread(30744):活动com.ssowens.groovebasstr​​ial.BassActivity渗漏IntentReceiver com.immersion.android.haptics.HapticFeedbackManager $ HapticFeedbackBroadcastReceiver @ 41d166d0最初注册到了这里。是否缺少调用unregisterReceiver()?
10-27 22:13:32.818:E / ActivityThread(30744):android.app.IntentReceiverLeaked:活动com.ssowens.groovebasstr​​ial.BassActivity渗漏最初注册IntentReceiver com.immersion.android.haptics.HapticFeedbackManager$HapticFeedbackBroadcastReceiver@41d166d0这里。是否缺少调用unregisterReceiver()?
。10-27 22:13:32.818:E / ActivityThread(30744):在android.app.LoadedApk $ ReceiverDispatcher< INIT>(LoadedApk.java:800)
10-27 22:13:32.818:E / ActivityThread(30744):在android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:601)
10-27 22:13:32.818:E / ActivityThread(30744):在android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1650)
10-27 22:13:32.818:E / ActivityThread(30744):在android.app.ContextImpl.registerReceiver(ContextImpl.java:1630)
10-27 22:13:32.818:E / ActivityThread(30744):在android.app.ContextImpl.registerReceiver(ContextImpl.java:1624)
10-27 22:13:32.818:E / ActivityThread(30744):在android.content.ContextWrapper.registerReceiver(ContextWrapper.java:430)
10-27 22:13:32.818:E / ActivityThread(30744):在com.immersion.android.haptics.HapticFeedbackManager.setupPackageBroadcastReceiver(HapticFeedbackManager.java:564)
。10-27 22:13:32.818:E / ActivityThread(30744):在com.immersion.android.haptics.HapticFeedbackManager< INIT>(HapticFeedbackManager.java:108)
10-27 22:13:32.818:E / ActivityThread(30744):在com.immersion.android.HapticFeedbackManagerProxy.initialize(HapticFeedbackManagerProxy.java:90)
10-27 22:13:32.818:E / ActivityThread(30744):在com.immersion.android.HapticFeedbackManagerProxy.access $ 100(HapticFeedbackManagerProxy.java:30)
10-27 22:13:32.818:E / ActivityThread(30744):在com.immersion.android.HapticFeedbackManagerProxy $ 1 $ 1.运行(HapticFeedbackManagerProxy.java:71)
10-27 22:13:32.818:E / ActivityThread(30744):在java.lang.Thread.run(Thread.java:856)
 

解决方案

解决方案1。

如果你有一个ItemClickListener一个ListView您必须设置监听器为空的overrive方法的onPause。

listView.setOnItemClickListener(exampleListener);

例:你的听众声明

 私人OnItemClickListener exampleListener =新OnItemClickListener(){} ....

@覆盖
    公共无效的onPause(){

        super.onPause();

        listView.setOnItemClickListener(空);

    }

@覆盖
    公共无效onResume(){

        super.onResume();
            如果(ListView控件!= NULL){
                listView.setOnItemClickListener(exampleListener);
             }
    }
 

解决方案2 如果你知道什么是你的BroadcastReceiver实例,你必须始终注销未overrive方法的onPause。

@覆盖     保护无效的onPause(){

  super.onPause();
    同步(本){
        如果(broadcastReceiverInstance!= NULL){
            unregisterReceiver(broadcastReceiverInstance);
        }
    }

}
 

第二个解决方案,我知道这不适合你的工作,但我让它以供参考。

我希望它可以帮助你。

I get the following error

"Are you missing a call to unregister receiver"

when I hit the back button to exit my application. How do I identify which Receiver is causing the leak and eliminate the error? I am using the code "DownLoader" from Google to download an expansion file.

10-27 22:13:32.818: E/ActivityThread(30744): Activity com.ssowens.groovebasstrial.BassActivity has leaked IntentReceiver com.immersion.android.haptics.HapticFeedbackManager$HapticFeedbackBroadcastReceiver@41d166d0 that was originally registered here. Are you missing a call to unregisterReceiver()?
10-27 22:13:32.818: E/ActivityThread(30744): android.app.IntentReceiverLeaked: Activity com.ssowens.groovebasstrial.BassActivity has leaked IntentReceiver com.immersion.android.haptics.HapticFeedbackManager$HapticFeedbackBroadcastReceiver@41d166d0 that was originally registered here. Are you missing a call to unregisterReceiver()?
10-27 22:13:32.818: E/ActivityThread(30744):    at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:800)
10-27 22:13:32.818: E/ActivityThread(30744):    at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:601)
10-27 22:13:32.818: E/ActivityThread(30744):    at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1650)
10-27 22:13:32.818: E/ActivityThread(30744):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1630)
10-27 22:13:32.818: E/ActivityThread(30744):    at android.app.ContextImpl.registerReceiver(ContextImpl.java:1624)
10-27 22:13:32.818: E/ActivityThread(30744):    at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:430)
10-27 22:13:32.818: E/ActivityThread(30744):    at com.immersion.android.haptics.HapticFeedbackManager.setupPackageBroadcastReceiver(HapticFeedbackManager.java:564)
10-27 22:13:32.818: E/ActivityThread(30744):    at com.immersion.android.haptics.HapticFeedbackManager.<init>(HapticFeedbackManager.java:108)
10-27 22:13:32.818: E/ActivityThread(30744):    at com.immersion.android.HapticFeedbackManagerProxy.initialize(HapticFeedbackManagerProxy.java:90)
10-27 22:13:32.818: E/ActivityThread(30744):    at com.immersion.android.HapticFeedbackManagerProxy.access$100(HapticFeedbackManagerProxy.java:30)
10-27 22:13:32.818: E/ActivityThread(30744):    at com.immersion.android.HapticFeedbackManagerProxy$1$1.run(HapticFeedbackManagerProxy.java:71)
10-27 22:13:32.818: E/ActivityThread(30744):    at java.lang.Thread.run(Thread.java:856)

解决方案

Solution 1.

If You have a ListView with a ItemClickListener You have to set the listener to null on overrive Method onPause.

listView.setOnItemClickListener(exampleListener);

Example: Declaration of your listener

private OnItemClickListener exampleListener = new OnItemClickListener() {}....

@Override
    public void onPause() {

        super.onPause();

        listView.setOnItemClickListener(null);

    }

@Override
    public void onResume() {

        super.onResume();
            if(listView != null){
                listView.setOnItemClickListener(exampleListener);
             }
    }

Solution 2 If You know what is your broadcastReceiver instance You have to unregister always un overrive method onPause.

@Override protected void onPause() {

    super.onPause();
    synchronized (this) {
        if(broadcastReceiverInstance != null){
            unregisterReceiver(broadcastReceiverInstance );
        }
    }

}

The second solution I know it does not work for you but I let it for reference.

I hope it helps You.

这篇关于缺少一个电话注销,我从来没有注册HapticFeedbackBroadcastReceiver接收器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆