Состояние активности пользовательского интерфейса не очищается при уничтожении активности в фоновом режиме (на корневом телефоне) - PullRequest
0 голосов
/ 08 ноября 2010

Мне нужно удалить пользовательские данные (имя пользователя, пароль) как собственного приложения Facebook (com.facebook.katana), так и штатного браузера на Android (com.android.browser) на рутированном телефоне через командную строку (котораяЯ звоню из моего собственного приложения).

Это то, что я звоню:

rm /data/data/com.android.browser/cache/webviewCache/*
rm /data/data/com.android.browser/databases/*
killall -9 com.android.browser

rm /data/data/com.facebook.katana/cache/webviewCache/*
rm /data/data/com.facebook.katana/databases/*
killall -9 com.facebook.katana

После того, как я убиваю процесс facebook, я проверяю с помощью ps и FB нетпроцесс работает больше.Затем я перезагружаю FB долгим нажатием на дом и выбираю приложение FB.Предыдущее имя пользователя / пароль все еще отображается на экране входа в систему (= тот же экран, на котором я его оставил до того, как убил приложение).Когда я затем нажимаю «назад» на устройстве, а затем снова запускаю приложение с помощью дома, нажмите и удерживайте клавишу FB, выберите экран входа в систему, как и должно быть.Откуда приходят значения для имени пользователя / пароля, когда я снова запускаю FB?

Я предполагаю, что при входе в систему по-прежнему возвращается savedInstanceState, но как этого можно избежать - или иначегде эти состояния пользовательского интерфейса на самом деле хранятся, чтобы удалить их?Но также, не должно ли перезапущенное приложение, после того как все его процессы убиты, быть уже в новом жизненном цикле?

Та же проблема с обычным браузером: если я покидаю браузер и я вхожу в системунапример, на странице gmail.com, где введено имя пользователя / пароль (но форма еще не отправлена), после чего при закрытии процесса браузера значения (имя пользователя), введенные в форму, все еще будут присутствовать после повторного запуска приложения после его уничтожения..

1 Ответ

1 голос
/ 11 ноября 2010

С http://groups.google.com/group/android-developers/browse_thread/thread/990feed121f0ea39:

ответ от Дайан Хэкборн:

У них не один и тот же экземпляр государство. Вы можете использовать "adb shell dumpsys активность ", чтобы увидеть активность системы стек; каждая из этих записей является «экземпляр» деятельности, насколько система обеспокоена. Убийство процесс, пока его пользовательский интерфейс находится в фон нормальная ситуация на система - это то, что происходит, когда памяти мало. Ожидается и не влияет на тот случай, когда Система находится в стеке. (Будет просто нужно попросить приложение воссоздать это в следующий раз, когда пользователь посещает его.) Убить процесс, пока он находится в передний план не нормальный. В этом если система не успела попросите его сохранить его состояние экземпляра, так он не может перезапустить деятельность в его последнее состояние, поэтому он бросает экземпляр прочь.

Пожалуйста, оставьте жизненный цикл документация. Процессы просто переходные объекты, используемые для хранения запущенные процессы; убить процесс это не то же самое, что "остановить" приложение. Вы лечите это как система Unix, когда это не так. Сброс приложения обратно к его начальное состояние делается с помощью кнопка данных в управлении приложениями, который просит менеджер пакетов стирать всех своих данных и выполняет полную принудительную остановку, которая в дополнение к Процессы убийства также останавливает услуги и сообщает всем системным службам освободить любое состояние о приложение (например, настроенные виджеты приложения так далее). Вы должны использовать тот же API что управление приложениями делает для этого, что не является частью SDK, но вы явно не пытается что-то сделать в SDK. Который воспитывает - твой вопрос должен быть опубликован в группе как портирование Android, так как вы делать вещи на уровне платформы. оприходование такие вопросы здесь не собираются чтобы получить хороший ответ, потому что, когда люди видят вопросы в этой группе они думают с точки зрения SDK, что совсем не имеет к вам отношения, что совсем не относится к вам

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...