android - 错过取消注册我从未注册的 HapticFeedbackBroadcastReceiver 接收器的调用

标签 android android-intent broadcastreceiver

我得到以下错误

"Are you missing a call to unregister receiver"

当我点击后退按钮退出我的应用程序时。如何识别哪个接收器导致泄漏并消除错误?我正在使用 Google 的代码“DownLoader”下载扩展文件。

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)

最佳答案

解决方案 1.

如果您有一个带有 ItemClickListener 的 ListView,您必须在覆盖方法 onPause 时将监听器设置为 null。

listView.setOnItemClickListener(exampleListener);

示例:您的听众声明

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);
             }
    }

解决方案 2 如果您知道什么是您的 broadcastReceiver 实例,则必须始终取消注册并覆盖 onPause 方法。

@覆盖 protected void onPause() {

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

}

我知道第二种解决方案对您不起作用,但我将其提供给您引用。

希望对您有所帮助。

关于android - 错过取消注册我从未注册的 HapticFeedbackBroadcastReceiver 接收器的调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19626446/

相关文章:

android - Intents发送后是否在排队?

Android 和 FragmentManager

java - Android JSON 解析(Jackson)

java - 尝试在 Android 应用程序(java)上设置静音按钮

java - Android - 我如何检测 Android 将进入屏幕锁定模式,我需要在该阶段完成一项工作

android - BroadcastReceiver.onReceive 是否总是在 UI 线程中运行?

android - wifi连接改变广播接收器重复多次

Android:视频编码 H.264 和设置帧率不起作用

android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData

Java Android : How to force only one instance of an app (singleTop not working correctly)?