Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/182.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android活动生命周期:杀死后恢复应用程序-设计问题_Android_Android Activity_Kill_Activity Lifecycle - Fatal编程技术网

Android活动生命周期:杀死后恢复应用程序-设计问题

Android活动生命周期:杀死后恢复应用程序-设计问题,android,android-activity,kill,activity-lifecycle,Android,Android Activity,Kill,Activity Lifecycle,atm我试图让我的应用程序围绕“onSaveInstanceState”和“onRestoreInstanceState”运行,但我挖掘得越深,出现的问题就越多 例如,我刚刚意识到,通过这两个函数恢复一个活动是毫无用处的。因为,如果我按下“后退”按钮并返回到之前的活动,则此活动不会获得其“savedInstanceState”包,而是完全重新创建 是否有一种方法可以恢复整个应用程序,而不仅仅是单个活动?或者这只是一个奇怪的设计,我甚至不应该费心恢复一个活动 亲切问候,, 水母 编辑:好吧,愚蠢的

atm我试图让我的应用程序围绕“onSaveInstanceState”和“onRestoreInstanceState”运行,但我挖掘得越深,出现的问题就越多

例如,我刚刚意识到,通过这两个函数恢复一个活动是毫无用处的。因为,如果我按下“后退”按钮并返回到之前的活动,则此活动不会获得其“savedInstanceState”包,而是完全重新创建

是否有一种方法可以恢复整个应用程序,而不仅仅是单个活动?或者这只是一个奇怪的设计,我甚至不应该费心恢复一个活动

亲切问候,, 水母

编辑:好吧,愚蠢的我

我的主要活动获取的捆绑包不为null,但仅在“onRestore…”中。在“onCreate”中,它实际上是空的,但一直都是这样。(例如,无论我是否在杀人后从其他活动中回来)

所以现在我在另一个方面感到困惑:我以前在另一个活动中测试过这个,在这里,“onCreate”和“OnRestoreInstanceState”的savedInstanceState捆绑包也是如此!这只是主要活动的随机性还是特殊性?(也尝试了不同的发射模式,但没有效果)

例如,我刚刚意识到,通过这两个函数恢复一个活动是毫无用处的

不,如果使用得当,它非常有用

因为,如果我按下“后退”按钮并返回到之前的活动,则此活动不会获得其“savedInstanceState”包,而是完全重新创建

不,没有

如果它已经存在并且在后堆栈上,它将被启动(
onStart()
)并恢复(
onResume()
),但它不会被创建。如果Android必须关闭上一个活动(例如,由于内存不足),则将创建上一个活动(
onCreate()
),并将传递一个
包,其中包含它在
onSaveInstanceState()中填充的数据

这些语句不正确的唯一方法是,如果您正在操纵“后退”按钮处理

是否有一种方法可以恢复整个应用程序,而不仅仅是单个活动

没有

或者这只是一个奇怪的设计,我甚至不应该费心恢复一个活动

您当然应该恢复一个活动

onSaveInstanceState()
用于两种情况:

  • 如果用户更改配置(例如,旋转屏幕),您的活动将被销毁并重新创建。您可以使用
    onSaveInstanceState()
    将数据从旧活动实例传递到新活动实例
  • 我在上面概述的后退按钮场景
  • 我以前在另一个活动中测试过这一点,在这里,“onCreate”和“OnRestoreInstanceState”的savedInstanceState捆绑包是相同的

    当然。他们应该是一样的。如果完全从头开始创建活动,则将传递
    onCreate()
    null
    ,并且不会调用
    onRestoreInstanceState()
    。但如果存在实例状态,则该状态(
    Bundle
    )将同时传递给
    onCreate()
    onRestoreInstanceState()

    这只是主要活动的随机性还是特殊性


    都不是。它们应该是一样的。

    非常感谢。我正在写我的答案,这时我意识到在“onCreate”中,我没有检查savedInstanceState是否为null,而是检查了我所得到的包。对不起,上面的问题让人恼火!