Скажем, есть приложение, которое создает учетную запись в AccountManager. Пользователь некоторое время изучает довольно сложный график активности этого приложения, затем переходит в Accounts and Sync
в настройках Android, удаляет учетную запись и подписывает ее (все еще находится в Accounts and Sync
как другой пользователь.
Я определил приемник для вещания LOGIN_ACCOUNTS_CHANGED
, и я могу изящно закрыть все службы. Но действия все еще присутствуют, нося имя первого пользователя в заголовке (пользовательский интерфейс запутался несколькими способами, но это наиболее очевидно).
Итак, возникает вопрос: что делать с этими сиротами?
- Я мог бы использовать что-то вроде
clearTaskOnLaunch
, но все действия находятся в фоновом режиме, когда происходит изменение. - Установить флаг в SharedPreferences и проверить
onResume()
каждого действия, а затем запуститьclearTask
активность, если это необходимо? Слишком грязный. - Лучший вариант, который я смог придумать, - использовать
android.os.Process.killProcess(android.os.Process.myPid())
, чтобы убить все действия. Это не слишком грациозно, но выполняет работу. Единственный побочный эффект заключается в том, что стек активности все еще существует, когда наиболее разумным кажется, что нужно начинать с действияLAUNCHER
с четкой историей.
Итак, что было бы лучшим способом ответить на описанный сценарий?