有人知道Android在简单的方向更改时销毁并重新创建活动背后的设计理念吗?
如果允许活动自行重绘(如果它选择这样做)不是更好、更简单和更实用的设计吗?
顺便说一句,我很清楚如何禁用我的应用程序对方向更改的影响,但我真正不理解Android中这种设计的原因。
有人知道Android在简单的方向更改时销毁并重新创建活动背后的设计理念吗?
如果允许活动自行重绘(如果它选择这样做)不是更好、更简单和更实用的设计吗?
顺便说一句,我很清楚如何禁用我的应用程序对方向更改的影响,但我真正不理解Android中这种设计的原因。
在文档中,http://developer.android.com/guide/topics/resources/runtime-changes.html
它指出:
重启行为旨在通过自动重新加载替代资源来帮助您的应用适应新的配置。
[..] 可能是因为 activity 即将结束 [..] 或者因为系统暂时销毁此 Activity 实例以节省空间。
这并不排除方向变化,但它似乎很奇怪会像这样工作。到目前为止,我唯一能够触发“自然”的 destroy
的方式是旋转屏幕。对我来说,执行 pause
,然后执行 resume
更合理。另外,“resume” 是一个错误的名称,但除此之外。 - pauluss86不太确定为什么,我猜测是因为它需要重建屏幕上的活动。
OnCreate 接受一个变量 "Bundle savedInstanceState"。您可以在其中保存数据以实现更快的重新加载。
package com.android.hello;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class HelloAndroid extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mTextView = new TextView(this);
if (savedInstanceState == null) {
mTextView.setText("Welcome to HelloAndroid!");
} else {
mTextView.setText("Welcome back.");
}
setContentView(mTextView);
}
private TextView mTextView = null;
}