public class MyFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
}
@Override
public void onResume() {
super.onResume();
if (?) {
... handle ...
}
}
@Override
public void onPause() {
super.onPause();
if (?) {
... handle ...
}
}
}
Hi. Я пытаюсь поиграть с сохранившимся фрагментом, который должен обрабатывать некоторые вещи во время onResume() и onPause(). Я добавил это к основной деятельности, и до сих пор он отлично работает, за исключением одного. Если я введу другое действие в приложение, скажем, настройки приложения, этот фрагмент все равно будет выполняться onResume и onPause после переключения экрана.Проверить состояние жизненного цикла
Что мне нужно, это выяснить, работает ли этот фрагмент, не на переднем плане. Я пробовал такие вещи, как isTaskRoot, но он вернет true, пока эти методы жизненного цикла выполняются. Теперь, если Android знает, чтобы этот фрагмент был приостановлен после запуска onResume, тогда должен быть способ проверить это из метода onResume?
Что мне нужно, это знать из фрагментов onResume, если оно действительно возобновляется или нет. Как я уже сказал, если я изменю активность на свою активность в настройках, то onResume будет вызываться во фрагменте, принадлежащем основному действию, даже если это НЕ то действие, в котором я сейчас живу. В этих случаях я не должен ничего выполнять в либо возобновить или приостановить, потому что фрагмент действительно не возобновляется. Я не знаю, почему они даже называются, когда активность находится в фоновом режиме, но в любом случае мне нужен способ рассказать в рамках собственных обратных вызовов фрагментов. –
Давайте посмотрим на второй подход. MainActivity.onPause() вызывает MyFragment.setForeground (false), который установит значение MyFragment.isParentInForeground в false. Затем MyFragment.onResume() может проверить, является ли isParentInForeground истинным или ложным, и принять решение. Кстати, действительно странно, что MyFragment.onPause/onResume вызывается, когда фрагмент находится в фоновом режиме :( – Y2i
Я не могу использовать Activity. Это небольшая библиотека, которая вставляет фрагмент в любую активность, где я могу этого захотеть. Я думаю, что обратные вызовы вызываются из-за состояния Retain Instance. Что мне кажется более странным, так это то, что если я выполню класс и проанализирую фрагмент «this» в моем onResume(), а в фоновом режиме, то Fragment.getActivity() будет null в вызываемом классе, но если я вызову getActivity() из метода onResume(), это не так. Если бы это было так, я мог бы просто использовать это, чтобы проверить текущее состояние. –