OnResume происходит только при доступе к активности во второй раз - PullRequest
0 голосов
/ 02 мая 2018

Я пытаюсь написать код для своего приложения для Android, чтобы события происходили при возобновлении активности. Хотя я хочу, чтобы это происходило только при повторном посещении мероприятия, а не в первый раз.

Поэтому я хочу, чтобы пользователь делал то, что ему нужно, в методе onCreate при первом посещении занятия, а затем, когда он возвращается к упражнению, появляется код onResume.

Должен ли я использовать другой метод или как мне добиться того, что я хочу сделать?

public void onResume(){
    super.onResume();

    RunningStatus = sharedPreferences.getBoolean("RunningStatus", false);

    if (isS1Pressed) {
        if (isPressed) {
            if (RunningStatus = false) {
                pause.setBackgroundResource(R.drawable.start);
            }
        }
    }

EDIT:

Я не имею в виду второй раз, я имею в виду каждый раз после. В основном у меня есть производственная линия, и мое приложение определяет, впереди или позади. Поэтому, когда пользователь входит в это действие, он может выполнить расчет. У нас есть кнопка паузы, где пользователь может приостановить линию, если производственная линия была остановлена ​​в реальной жизни. Хотя мне бы хотелось, чтобы пользователь мог затем выйти из этой конкретной производственной линии и выполнить вычисления на других линиях. Хотя в ту минуту, когда я покидаю активность, я теряю все ее состояние.

Спасибо

Ответы [ 3 ]

0 голосов
/ 02 мая 2018

Если вы хотите сделать что-то для очень определенного времени (только 2-го, а не 1-го или 3-го, 4-го, ...), я предлагаю вам использовать некоторую переменную-счетчик и использовать метод активности onSaveInstanceState () и onRestoreInstanceState (), чтобы хранить и извлекать. Если вы не хотите сбрасывать счетчик, когда приложение было убито, используйте данные для сохранения, например SharePreference, для хранения счетчика.

0 голосов
/ 02 мая 2018

я предполагаю, что вы прошли жизненный цикл активности, если нет, то посетите https://developer.android.com/guide/components/activities/activity-lifecycle

boolean secondUse=false;//this should be a field in the activity class

Метод onRestart () вызывается только тогда, когда мы посетили действие и вернулись, а затем мы посещаем (т. Е. Когда действие уже находится в стеке активности).

если у вас есть другой вариант использования, тогда лучше использовать sharedPreference.

переопределить onRestart () внутри него напишите следующее

if(!seconduse){
//do your stuff
secondUse=true;
}

как вы сказали в редактировании, вам нужно, чтобы материал работал при каждом посещении после первого посещения, а затем просто вставьте свой код в метод onRestart ()

public void onRestart(){
super.onRestart();

RunningStatus = sharedPreferences.getBoolean("RunningStatus", false);
   if (isS1Pressed) {
    if (isPressed) {
        if (RunningStatus = false) {
            pause.setBackgroundResource(R.drawable.start);
        }
    }
   }
}
0 голосов
/ 02 мая 2018

Вы можете использовать логический флаг. в onResume например

if (secondVisit) {
  ...
} else secondVisit = true;
...