自从升级到Android 4.2.2以后出现了奇怪的错误 - Activity泄漏了IntentReceiver。

15
昨晚我将我的三星Galaxy Tab 2 升级到Android 4.2.2,然后发现LogCat里出现了一些之前没有出现过的奇怪错误。
我原本以为这可能是我应用程序中隐藏的bug或内存泄漏,但我找不到任何问题。
似乎只会在当前活动页面有下拉菜单Spinner打开时才会出现该错误。
错误提示如下: Activity uk.co.xxxx.xxxx has leaked IntentReceiver com.immersion.android.haptics.HapticFeedbackManager$HapticFeedbackBroadcastReceiver@41e4bac0 that was originally registered here. Are you missing a call to unregisterReceiver()? 还有其他人遇到过这个问题吗?你认为可以忽略它吗,因为这只会在我的一个设备上出现。
--- 编辑 ---
另外,我没有在任何地方注册任何接收器,因此也没有需要注销的内容。

2
我今天刚升级了,但是还是看到同样的错误。这里也没有注册接收器。 - celoftis
不,我遇到这个问题的活动中没有旋转器... - celoftis
1
所以没有人知道这里发生了什么?同样的异常... - validcat
另外,我注意到类com.immersion.android.haptics.HapticFeedbackManager不是Android开源项目SDK的一部分,因此这个类来自第三方。你会在很多游戏中看到这个类被使用。暂时忽略它?是的。或者,在www.immersion.com上记录一个错误并让他们修复它。 - ChuongPham
我也遇到了相同的错误。我使用的是三星Galaxy Tab 2 7英寸,当我退出应用程序时会出现这种情况。有什么解决方法吗? - sowens
显示剩余5条评论
2个回答

9
我有类似的问题,曾在Haptic开发者论坛上提问并收到以下回复:

你看到的异常是无害的警告,操作系统会负责释放异常中提到的资源。换句话说,不需要担心或采取任何措施。

如果需要其他细节,请点击这里

这些话并不令人感到安慰。泄漏很容易在关闭时被检测和清除,但在此之前,它们可能会随着时间的推移而积累,耗尽资源。如果泄漏成为拒绝服务攻击的目标(反复调用导致泄漏的内容),甚至可能构成安全风险。这是又一个例子,说明三星软件/固件制造商编码不佳。 - Merk

0
从堆栈跟踪中可以看出,您的 Activity(此处被掩盖)注册了一个未正确释放的 HapticFeedbackBroadcastReceiver。通常在 onPause() 生命周期钩子中完成,以便在暂停或关闭 Activity 时调用它。
示例代码:
@Override 
protected void onPause() {

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

如果您尚未自行注册任何接收器,那么系统可能基于弹出的键盘。因此,隐藏键盘或应用程序中使用的任何其他具有触觉反馈激活的元素可能是一个好主意。考虑自定义键盘、自定义视图等任何东西。要更详细地检查,请提供更多代码。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接