在后台(在root手机上)杀死活动时未清除UI活动状态

时间:2010-11-08 03:39:47

标签: android process android-activity

我需要通过命令行在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的登录页面上输入了用户名/密码(但是表单尚未提交),则杀死浏览器进程,在应用程序被杀死后重新启动应用程序后,输入到表单中的值(用户名)仍然存在。

1 个答案:

答案 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,   这根本不适合你。这与你没有任何关系。