onPause()和onSaveInstance()总是被调用 配置更改。但是在一个特殊情况下,如果程序员正在处理配置 比这种情况更改它不会调用这些方法。
如果程序员正在处理配置更改"这是什么意思?这是否意味着如果以编程方式我们正在改变设备的方向,那么这些方法将不会被调用?
onPause()是唯一的函数 在杀死应用程序之前没有失败地调用。所以我们应该保存 仅在onPause()中的所有持久数据。
但是,如果我们通过调用finish()
方法完成onCreate中的活动,则会直接调用onDestroy()
并且不会调用onPause()
,onStop()
。
答案 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
元素添加到其清单中的开发人员。