Утечка активности IntentReceiver android.widget.ViewFlipper

Я добавляю ViewFlipper , созданный из ресурса макета, в 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()?

Я сделал немного покопался и выяснил, что сообщение связано с запретом отмены регистрации получателей, за исключением того, что я не зарегистрировал ни одного. Как ни странно, это сообщение появляется только в том случае, если нижний колонтитул ViewFlipper был удален из ListView перед удалением (с помощью кнопки возврата). Я отсоединяю нижний колонтитул, когда он мне больше не нужен, используя:

mListView.removeFooterView(mLoadMoreFlipper);

Я пробовал использовать WeakReference для ViewFlipper , но это не помогло. Я также попытался установить ссылку mLoadMoreFlipper на null , но это тоже не помогло.

Кто-нибудь сталкивался с этой проблемой раньше? Похоже, это связано с моей деятельностью, содержащей ссылку на ViewFlipper после того, как он был отсоединен от ListView , но я не знаю, как явно уничтожить ViewFlipper .

6
задан Code Poet 2 January 2012 в 12:49
поделиться