代码之家  ›  专栏  ›  技术社区  ›  Mathias Conradt

后台终止活动时未清除活动的用户界面状态(在根电话上)

  •  0
  • Mathias Conradt  · 技术社区  · 14 年前

    我需要删除本地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 ,但如何才能避免这种情况——否则,为了删除这些UI状态,这些UI状态实际存储在哪里?但是,重新启动的应用程序,在所有的进程都被终止之后,难道不应该已经在一个新的生命周期中吗?

    股票浏览器也有同样的问题:如果我离开浏览器,我在gmail.com的登录页面上输入用户名/密码(但表单尚未提交),然后终止浏览器进程,重新启动后,表单中输入的值(用户名)仍将存在。在它被杀后他又开始应用了。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Mathias Conradt    14 年前

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

    Dianne Hackborn回复:

    他们没有相同的实例 州。你可以使用“adb shell dumpsys 活动”查看系统的活动 堆栈;每个条目都是 活动的“实例” 这个系统是相关的。杀死一个 当其用户界面位于 背景是正常情况 系统——当 内存不足。这是预期的,以及 不会影响 系统在堆栈上。(它会 只需请求应用程序重新创建 下次用户访问时。) 在进程处于 前景不正常。在那里面 万一系统没有时间 要求它保存其实例状态,因此 无法在中重新启动活动 它的最后一个状态,所以它抛出 实例离开。

    请离开生命周期 文档。过程只是 用于保存的瞬态实体 运行进程;终止进程 与“停止”和 应用程序。你在治疗这个 就像一个Unix系统,如果不是。 将应用程序重置回其 初始状态通过“清除”完成 管理应用程序中的“数据”按钮, 它要求包管理器 擦除 全部的 它的数据,并做一个完整的力停止,除了 终止进程也会停止服务 并通知所有系统服务 释放他们关于 应用程序(如已配置的应用程序小部件 等等)。您应该使用相同的API 管理应用程序可以解决这个问题, 不是SDK的一部分,但您 显然不是想做什么 在SDK中。它带来了——你的 应将问题发布到组 就像Android移植一样 做平台级的工作。邮寄 像这样的问题不能解决 因为什么时候 人们看到关于这个组的问题 他们在考虑软件开发工具包, 这与你一点关系都没有,也与你一点关系都没有。