我正在将一个从布局资源中膨胀出来的ViewFlipper
作为Footer
添加到ListView
中。这是我的翻转器布局(为了简洁起见省略了细节):
<?xml version="1.0" encoding="utf-8"?>
<ViewFlipper ...>
<Button
/>
<LinearLayout
... >
<ProgressBar
... />
<TextView
... />
</LinearLayout>
</ViewFlipper>
我使用以下方式将其添加到我的ListView中:
mListView.addFooterView(mLoadMoreFlipper);
当我的活动被销毁时,我会在LogCat中看到以下消息,后面跟着一个调用堆栈:
Activity com.gk.ItemListActivity has leaked IntentReceiver android.widget.ViewFlipper$1@44c84ab0
that was originally registered here. Are you missing a call to unregisterReceiver()?
我进行了一些调查,发现这个消息与未注销接收器有关,但我没有注册任何接收器。奇怪的是,只有在从ListView
中删除页脚ViewFlipper
(使用返回按钮)之前,才会出现此消息。我通过使用以下方式解除页脚绑定:
mListView.removeFooterView(mLoadMoreFlipper);
我尝试使用
WeakReference
弱引用来引用 ViewFlipper
但是并没有帮助。我还试图将 mLoadMoreFlipper
引用设为 null
但也没有帮助。有人之前遇到过这个问题吗?看起来这与我的活动在从
ListView
中分离后仍然持有对 ViewFlipper
的引用有关,但是我不知道如何显式销毁 ViewFlipper
。