путаница с жизненным циклом фрагментов

У меня есть mainActivity, на которой размещен ViewPager и три вкладки (MQTT, ECO, Logger). mainActivity имеет обратные вызовы жизненного цикла (onCreat, onResume), а остальные три вкладки имеют обратный вызов жизненного цикла Fragment (onattached, onCreateView, onViewcreated, onResume, onPause).

во время выполнения я получаю в logCat следующее:

01-29 13:28:28.732: W/MainActivity(31412): @onCreate().
01-29 13:28:28.802: W/MainActivity(31412): @onResume().
01-29 13:28:28.842: W/MQTT_Settings_Frag(31412): @onAttach().
01-29 13:28:28.842: W/MQTT_Settings_Frag(31412): @onCreateView().
01-29 13:28:28.862: W/MQTT_Settings_Frag(31412): @onViewCreated().
01-29 13:28:28.862: W/MQTT_Settings_Frag(31412): @onResume().
01-29 13:28:28.862: W/Eco_Settings_Frag(31412): @onAttach().
01-29 13:28:28.862: W/Eco_Settings_Frag(31412): @onCreateView().
01-29 13:28:28.892: W/Eco_Settings_Frag(31412): @onViewCreated().
01-29 13:28:28.892: W/Eco_Settings_Frag(31412): @onResume().

и когда я прокручиваю, чтобы перейти на вкладку «Эко», «вторая», logCa не сообщает ничего, кроме фрагментов, но когда я перехожу на третью вкладку «Журнал», которая еще не реализована, logCat отображает:

01-29 13:37:27.062: W/MQTT_Settings_Frag(31412): @onPause().

и когда я перехожу от вкладки Logger к Eco-Tab, LogCat отображает следующее:

01-29 13:37:52.292: W/MQTT_Settings_Frag(31412): @onCreateView().
01-29 13:37:52.322: W/MQTT_Settings_Frag(31412): @onViewCreated().
01-29 13:37:52.322: W/MQTT_Settings_Frag(31412): @onResume().


why the first tab "MQTT-Tab" goes in onPause() when i goto only to the third Tab Logger-Tab?
And why the first tab "MQTT-Tab" goes into (onCreateView, onViewCreated, onResume) when i move to the secondtab Eco-tab frm the third one LoggerTab?

person user2121    schedule 29.01.2015    source источник


Ответы (1)


ViewPager по умолчанию хранит в памяти только соседние вкладки, поэтому ваша первая вкладка уничтожается, когда вы переходите на третью вкладку, и создается заново, когда вы возвращаетесь к середине. Вы можете изменить это поведение, используя yourViewPager.setOffscreenPageLimit(int).

person Lance Toth    schedule 29.01.2015
comment
означают ли соседние вкладки три вкладки, которые я размещал на странице просмотра? - person user2121; 29.01.2015
comment
Под соседним я подразумеваю текущий выбранный/видимый, а также те, которые были до и после. В таких случаях всегда принимается во внимание текущая точка зрения. - person Lance Toth; 29.01.2015