我得到以下错误
"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/