Обратите внимание, что я не являюсь разработчиком Android, но у меня есть телефон Android, и я думаю, что эта проблема весьма интересна.
Подводя итог, я уже читал об этой проблеме здесь, где он ищетмне, что следующие причины могут быть основной причиной этой проблемы:
- Вы используете clearTaskOnLaunch, который стирает все намерения / действия / задачи / what_buzzword_is_used_for_this при запуске вашего приложения.
- Затем появляется Androidпостоянно помнить о последнем состоянии приложения в некоторой (как я теперь буду называть) глобальной базе данных внутренних состояний (для краткости GISD), которую нельзя так легко стереть (по крайней мере, с помощью удаления приложения, перезагрузки, очистки намерений и т. д.).
- Android пытается заново открыть приложение с его последним состоянием.Если текущая активность отсутствует, то эта информация берется из GISD, следовательно, в вашем случае это «системные настройки».
- Нет способа (или неизвестно, как) стереть состояние, сохраненное вGISD.(Ваш вопрос заключается в том, как это сделать.)
Если это правда, то это явно проблема с телефоном, серьезная ошибка в Android, так как вы, вероятно, можете блокировать приложения!Все, что вам нужно сделать, это:
- Каким-то образом спровоцировать аналогичную вещь, как clearTaskOnLaunch - что должно быть возможно - для приложения, которое вы хотите кирпичировать.
- Обманите приложение, чтобы запустить егодругое приложение, такое как «Системные настройки» - многие приложения делают это, чтобы включить WiFi или подобное, но я думаю, что некоторые умные люди (читай: не я) найдут способ сделать это практически для любого приложения
- Теперь убейтеприложение в этом состоянии.
Android запомнит это состояние в GISD, и если вы попытаетесь запустить приложение с главного экрана, это не удастся в будущем.Приятно.
Однако, даже при отсутствии исправления, можно надеяться, что приложение можно вернуть таким же образом:
- Запустите приложение с помощью Activityтакой, что он запускает.Когда вы пишете, это работает для вас.
- Примените то, что делает clearTaskOnLaunch.(Я действительно понятия не имею, как, но вы, как разработчик Android, вероятно, знаете.)
- Позвольте вашему приложению запустить третье приложение так, чтобы это третье приложение стало глобальным состоянием.
- Убейте ваше приложение.
Возможно, время и последовательность важны, поэтому, возможно, вам придется оставить третье приложение после того, как ваше приложение будет уничтожено, возможно, вам придется вытащить аккумулятор телефона в нужное время, возможно, вы должны использоватькакие-то странные вещи ADB, чтобы помешать вашему телефону делать правильные вещи, возможно, вам нужна другая последовательность действий или что-то еще отсутствует, что угодно, даже выяснить, как спровоцировать ваш тип ошибки, может быть трудно - но благодаря вашему обнаружению мы знаеместь такая вещь.
Если вы можете заставить Android запускать третье приложение с главного экрана вместо вашего приложения, это подтвердит, что вы действительно можете решить эту проблему.Если это не работает, и поэтому невозможно запретить Android вызывать системные настройки вместо вашего приложения, то у Android, безусловно, есть большая проблема, поскольку, вероятно, кто-то найдет способ навсегда заблокировать приложения во всех этих драгоценных телефонах (ab) использование этой ошибки.
Если предыдущий шаг работает, тем не менее, последний шаг теперь должен позволить этому третьему приложению вернуться на главный экран вашего приложения:
- Startваше приложение.
- Это запустит третье приложение.
- Примените то, что делает clearTaskOnLaunch.
- Позвольте третьему приложению запустить главный экран вашего приложения (или что вам нужно)
- Убейте третье приложение (и, возможно, ваше приложение).
Теперь состояние глобальной активности снова будет возвращено вашему приложению - если все пойдет хорошо, третьему приложению также не следует вредить.
Обратите внимание, что я не уверен, что это действительно можно сделать, так как я не могу сам это проверить.И, сказав, что все, я согласен, что мы, безусловно, должны быть лучшим способом исправить эту проблему!
Но интересно было бы посмотреть, что произойдет, если ваше приложение имеет состояние третьего приложения и третьего приложенияимеет состояние вашего приложения.Приводит ли это к бесконечному циклу?
Интересно также, что произойдет, если вы удалите третье приложение.Очищает ли это автоматический запуск в этом приложении или это делает вас беспомощным?
Поскольку вы работаете с Android Phone (только), я должен сказать, что вы обнаружили довольно хороший беспорядок.И именно поэтому я очень заинтересован, если есть исправление, поскольку сброс к заводским настройкам не может считаться решением.Читайте: Это не только проблема разработчика, это касается и пользователей Android.
PS: Пожалуйста, простите мне мой плохой английский, длину этого поста, не использую правильные Buzzwords и публикую по проблемеЯ не эксперт, поэтому мой ответ немного ОТ.Однако я делаю это с HTH.