在配置更改和终止应用程序期间了解onPause()和onSaveInstance()

时间:2016-03-28 17:57:02

标签: android android-activity activity-lifecycle onpause

  

onPause()和onSaveInstance()总是被调用   配置更改。但是在一个特殊情况下,如果程序员正在处理配置   比这种情况更改它不会调用这些方法。

如果程序员正在处理配置更改"这是什么意思?这是否意味着如果以编程方式我们正在改变设备的方向,那么这些方法将不会被调用?

  

onPause()是唯一的函数   在杀死应用程序之前没有失败地调用。所以我们应该保存   仅在onPause()中的所有持久数据。

但是,如果我们通过调用finish()方法完成onCreate中的活动,则会直接调用onDestroy()并且不会调用onPause()onStop()

2 个答案:

答案 0 :(得分:1)

  

如果程序员正在处理配置,这是什么意思   改变“。这意味着如果以编程方式我们正在改变   设备的方向然后这些方法不会被调用?

这意味着您作为程序员必须手动设置配置更改时发生的情况。将调用此方法。

@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);

    // Checks the orientation of the screen
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
        Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show();
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){
        Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show();
    }
}

因此,您可以处理在方向和其他配置发生变化时会发生什么。

  

但是如果我们通过调用finish()来完成onCreate中的活动   方法然后直接调用onDestroy()和onPause,onStop不是   调用。

如果要通过调用finish显式销毁活动,则应覆盖onDestroy方法并进行清理。我们谈论的是如果您的应用程序在运行时发生变化会发生什么,即电话呼叫发生,轮换更改等等。

答案 1 :(得分:0)

  

如果程序员正在处理配置更改"这是什么意思?这是否意味着如果以编程方式我们正在改变设备的方向,那么这些方法将不会被调用?

这可能是指将configChanges元素添加到其清单中的开发人员。