Я добавляю 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
.