Слишком много раз срабатывает активность

1

У вас есть еще одна проблема.

Наше приложение начинается с активности вкладки. Но перед тем, как пользователь сможет войти в операцию табуляции, чтобы выполнить работу, мы должны проверить, не вошли ли они в систему. Этот логин требуется для всех действий в активности вкладок. Таким образом, вместо проверки безопасности во всех действиях мы создали собственную абстрактную "активность" и активировали действия табуляции, которые расширяют нашу пользовательскую деятельность.

Наша "проверка безопасности" (просто посмотрите, есть ли у них ключ входа и маркер входа в Preferences) помещается внутри onResume() абстрактной активности. Если какая-либо из этих проверок вернется с ошибкой, мы отменим действие входа и используем диалог на этом экране. (Мы делаем это, потому что мы не хотим, чтобы пользователь мог видеть данные на вкладках, если они не вошли в систему, поэтому это действие входа - черный фон с диалогими для имени пользователя/пароля). Проблема заключается в том, что onResume() абстрактной активности вызывается много раз и многократно запускает функцию входа в систему.

Мы попытались установить флаги "singleInstance" и singleTask в xml для активности входа, но действие заканчивается вызовом onActivityResult, прежде чем он даже будет отображаться на экране.

  • 1
    Почему бы вам не поместить его во вкладку onCreate или onStart?
Теги:

2 ответа

0
Лучший ответ

Узнал, что здесь происходит. Когда пользователь запустил приложение в вертикальном режиме, приложение перешло непосредственно на экран входа в систему, а onResume вызывается только один раз, как и ожидалось. Но если пользователь запустил телефон по горизонтали, телефон выполнил бы вертикальный вызов через onResume, и до того, как телефон фактически запустит экран входа в систему, он будет работать через onResume по горизонтали. Единственный способ, которым я мог подумать об этом, - использовать статический экземпляр экземпляра, который будет увеличиваться, когда действия onCreate и decment при вызове onDestroy. Этот экземпляр экземпляра затем был добавлен в мой оператор if вместе с проверкой ключа и маркера, чтобы увидеть, был ли уже запущен один экземпляр.

Это решило мою проблему. Спасибо за предложения, хотя!

0

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

  • 0
    На самом деле это не проверка безопасности. По какой-то причине наш метод onResume в нашем абстрактном действии запускается три раза до того, как действие входа в систему даже начинается. Хотя все в порядке, мы отказались от идеи и возвращаемся к обычным диалоговым окнам во время действия вкладки, чтобы справиться с этим.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню