【问题标题】:What happens when already destroyed activity by OS is revoked by user from recent apps?当操作系统已经破坏的活动被用户从最近的应用程序中撤销时会发生什么?
【发布时间】:2019-04-11 06:12:46
【问题描述】:

据我所知,一个已经被 Android 系统销毁的应用程序驻留在最近的应用程序中。例如,我启动了我的应用程序并浏览了几个活动。然后退出,并打开了其他几个应用程序,几个小时没有再次启动我的应用程序。我上次打开的活动将保留在最近的应用程序中,即使它已被系统破坏。我的问题是当我从最近的应用程序列表中触摸我的应用程序时,将运行哪些生命周期方法以及按什么顺序运行?此外,我在最近的应用程序上仍显示的活动中的数据会发生什么情况?它是从一开始就创建的吗?我还有活动堆栈吗?我的基础应用程序类也会重新创建吗?

【问题讨论】:

    标签: android android-activity lifecycle android-recents


    【解决方案1】:

    根据一个activity的LifeCycle,在你的应用被安卓操作系统杀死后(为更优先的应用获取内存),你的activity会从onCreate()方法开始,像往常一样经历循环)什么关于您的数据:

    1. 如果您的视图有 ID,则视图(如 EditText)中的值将被恢复。
    2. 您的变量值我建议您使用 onSaveInstanceState() 和 onRestoreInstanceState() 保存和恢复。

    【讨论】:

    • 好的,我编辑了我的问题。我是否从被破坏的活动中获取来自 onRestoreInstanceState 的数据?我的基础应用程序类是否会从一开始就重新创建。它的变量发生了什么变化,它们已经被销毁了吗?
    • 我是否从已销毁的活动中获取来自 onRestoreInstanceState 的数据? - 是的!我的基础应用程序类会从一开始就重新创建吗? - 是的!它的变量发生了什么,它们已经被破坏了吗? - 它们将在您的应用进程被终止后被销毁,因为虽然存在指向变量值的链接,但它们会消耗系统内存,这就是它们将被终止的原因)
    • 但这应该意味着即使应用程序被销毁,我保存在 saveİnstanceState 上的数据也会永远保留。这对我来说有点奇怪。
    • 没有记录 Android 如何处理 Bundle 数据...这是我能提供的一切帮助 )))
    • 所以。根据 android 生命周期方案,如果您没有来自 onCreate() 方法的日志,您的进程不会被杀死。看起来您的应用程序刚刚从后台堆栈恢复。我建议您将日志放入 onRestart() 方法并查看。如果您将获得日志,那么您的应用程序只会恢复。抱歉,如果你的应用进程被杀死,没有办法捕捉到......
    【解决方案2】:

    这里有两种情况:-

    • 如果您的应用程序仍然在最近的应用程序中很长时间并且其他应用程序需要内存,您的应用程序将被 Android 操作系统杀死,如果您再次打开它,它将从启动屏幕启动。

    • 如果您的应用在不需要内存的情况下在最近的应用中停留的时间很短,那么您使用的最后一个活动将被打开,它的生命周期从 onStart() 开始。

    一旦你按下主页按钮,它将调用onStop 而不会破坏它,除非操作系统或用户这样做。

    【讨论】:

    • 谢谢 Ibrahim,最后打开的活动再次打开。我没有启动画面。我有一个从我的启动器活动开始的任务流。但是,当应用程序被操作系统销毁并且后来通过最近的应用程序调用我的应用程序的一些进一步活动时,由于我的启动活动没有被调用,我的任务将无法启动。
    • 我可能不得不考虑我的应用程序不会总是从我的启动活动开始的情况。
    • @MehmetKatircioglu 好吧,我也不太理解你,但我认为你的应用架构师/逻辑有问题。
    • @MehmetKatircioglu 如果您的应用程序需要从启动器活动启动,您可以清除调用 onStop 的堆栈,但如果他重新打开您的应用程序并从头开始,这对用户不友好,
    • 只要我的基础应用程序存在,我就不需要这种行为,因为我从任务中获得的变量存储在应用程序类中引用的对象中。当用户按照自己的意愿销毁应用程序并再次启动应用程序时,我的流程序列将再次起作用。从最近的应用程序调用一些中间活动是我面临问题的唯一条件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    • 1970-01-01
    • 2011-06-24
    • 2011-09-30
    • 1970-01-01
    • 2019-07-21
    相关资源
    最近更新 更多