我需要通过命令行在root手机上删除原生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进程运行了。然后我通过长按home并选择FB应用程序重新启动FB。之前的用户名/密码仍会显示在登录屏幕上(=我在杀死应用程序之前离开的同一屏幕)。当我按下设备上的“后退”,然后通过主页长按/选择FB再次启动应用程序时,登录屏幕应该是空的。当我首先再次启动FB时,用户名/密码的值在哪里?
我认为登录活动仍然会检索savedInstanceState
,但是如何避免这种情况 - 或者,为了删除它们,实际存储的UI状态在哪里?但是,重启的应用程序,毕竟它的进程被杀死了,不应该已经处于新的生命周期吗?
同样的问题是股票浏览器:如果我离开浏览器并且我在例如gmail.com的登录页面上输入了用户名/密码(但是表单尚未提交),则杀死浏览器进程,在应用程序被杀死后重新启动应用程序后,输入到表单中的值(用户名)仍然存在。
答案 0 :(得分:1)
来自http://groups.google.com/group/android-developers/browse_thread/thread/990feed121f0ea39:
来自Dianne Hackborn的回复:他们没有相同的实例 州。您可以使用“adb shell dumpsys 活动“查看系统的活动 堆;每个条目都是 活动的“实例” 系统而言。杀了一个 进程,而其UI在 背景是正常的情况 系统 - 它是什么时候发生的 记忆力很低。预计,和 不会影响实例 系统已堆叠在一起。 (它会 只需要让应用重新创建 它是用户下次访问它时。) 在进程中杀死进程 前景不正常。在那里面 案件系统没有时间 要求它保存其实例状态,所以 它无法重新开始活动 它的最后一个状态,所以它抛出了 离开了。
请离开生命周期 文档。流程是公正的 曾经持有的瞬态实体 运行过程;杀死一个进程 与“停止”不一样 应用。你正在对待这个 就像一个Unix系统,当它不是。 将应用程序重置回其中 初始状态是用“清除”完成的 管理应用程序中的数据“按钮, 要求包管理员 抹去 所有的数据,除此之外还会进行全力停止 杀戮过程也会停止服务 并告诉所有系统服务 释放他们所拥有的任何州 应用程序(例如配置的应用程序小部件 等等)。您应该使用相同的API 管理应用程序的目的就是为了这个 不是SDK的一部分,但是你 显然不是想做点什么 在SDK中。这会带来 - 你的 问题应该发布到一个小组 喜欢android-porting,因为你是 做平台级的东西。发帖 像这样的问题不会发生 得到一个好的回应,因为什么时候 人们看到这个群体的问题 他们正在考虑SDK, 这根本不适合你。这与你没有任何关系。