活动泄漏了IntentReceiver android.widget.ViewFlipper。

6

我正在将一个从布局资源中膨胀出来的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

我在这里的代码中没有看到任何可能导致此问题的东西。您是否注册了任何其他与页脚内容有关的回调函数或侦听器? - Brian Dupuis
1个回答

1

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