第一行代码:Android(2nd ed)(42):先从看得到的入手——探究活动 2.5.1

阅读数:32 2019 年 10 月 23 日 04:54

第一行代码:Android(2nd ed)(42):先从看得到的入手——探究活动 2.5.1

(活动的启动模式:standard)

standard 是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式。因此,到目前为止我们写过的所有活动都是使用的 standard 模式。经过上一节的学习,你已经知道了 Android 是使用返回栈来管理活动的,在 standard 模式(即默认情况)下,每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用 standard 模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。

我们现在通过实践来体会一下 standard 模式,这次还是准备在 ActivityTest 项目的基础上修改,首先关闭 ActivityLifeCycleTest 项目,打开 ActivityTest 项目。

修改 FirstActivity 中onCreate()方法的代码,如下所示:

复制代码
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("FirstActivity", this.toString());
setContentView(R.layout.first_layout);
Button button1 = (Button) findViewById(R.id.button_1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(FirstActivity.this, FirstActivity.class);
startActivity(intent);
}
});
}

代码看起来有些奇怪吧,在 FirstActivity 的基础上启动 FirstActivity。从逻辑上来讲这确实没什么意义,不过我们的重点在于研究 standard 模式,因此不必在意这段代码有什么实际用途。另外我们还在onCreate()方法中添加了一行打印信息,用于打印当前活动的实例。

现在重新运行程序,然后在 FirstActivity 界面连续点击两次按钮,可以看到 logcat 中打印信息如图 2.33 所示。

第一行代码:Android(2nd ed)(42):先从看得到的入手——探究活动 2.5.1

图 2.33 standard 模式下的打印日志

从打印信息中我们就可以看出,每点击一次按钮就会创建出一个新的 FirstActivity 实例。此时返回栈中也会存在 3 个 FirstActivity 的实例,因此你需要连按 3 次 Back 键才能退出程序。

standard 模式的原理示意图,如图 2.34 所示。

第一行代码:Android(2nd ed)(42):先从看得到的入手——探究活动 2.5.1

图 2.34 standard 模式示意图

评论

发布