У меня странная (на мой взгляд) проблема. Мое приложение редко выдает ANR s. Я пытаюсь уменьшить их, где это возможно, и до сих пор добился успеха. Однако, когда диалоговое окно ANR действительно появляется , если я (или любой пользователь) решу закрыть приложение, нажав «закрыть приложение», а не ждать , пока оно не станет отзывчивым, тогда приложение закрывается, но немедленно перезапускается, отображая ту же активность, что и при отображении диалога ANR.
Это хлопотно , потому что когда пользователь обычно запускает мое приложение, существует определенная последовательность действий , которую он / она проходит, каждый отвечает за выполнение некоторых задач, создание некоторые объекты и т. д. Когда приложение автоматически перезапускается, однако, и пользователь оказывается в той же активности, в которой он находился, когда отображалось диалоговое окно ANR, эта последовательность действий не выполнялась, поэтому некоторые требуемые вещи отсутствуют и таким образом мое приложение вылетает . Возможно, объект имеет значение null, значение int имеет неправильное значение, чем должно быть, некоторая строка может быть пустой и т. Д. Точная проблема здесь не важна . Важным является , чтобы приложение не проходило последовательность действий, которую оно обычно выполняет при открытии пользователем, настраивая все те объекты, переменные и т. Д., Которые ему понадобятся позднее, прежде чем выполнять это действие.
С другой стороны, , если мое приложение в любой момент падает, у меня есть UncaughtExceptionHandler, который закрывает мое приложение «чистым способом» . Эквивалент того, как пользователь нажал кнопку «Обзор», а затем закрыл приложение, нажав «x» или проведя пальцем влево / вправо . Таким образом, если пользователь хочет использовать приложение снова, он / она запускает его снова, приложение выполняет последовательность действий, которые он должен, и все работает, как предполагалось. Однако, когда появляется диалоговое окно ANR, я не могу контролировать то, что фактически делает нажатие «Закрыть приложение» ...
Или я могу?
Это правильное поведение диалога ANR или я что-то здесь упускаю? Кто-нибудь еще испытывал это? Можно ли как-нибудь закрыть свое приложение и оставить его закрытым после того, как пользователь выбрал в диалоговом окне пункт «Закрыть приложение»? (Наверное, нет).
Заранее спасибо и, пожалуйста, если я что-то упустил здесь, постарайтесь быть нежным! :)