Activity及其生命周期

1、传递一般数据的核心代码:

Intent intent = new Intent(MainActivity.this, NextActivity.class);
Bundle bundle = new Bundle();
bundle.putString("myname", "hehaitao");
bundle.putInt("age", 16);
intent.putExtras(bundle);
startActivity(intent);

(2)、NextActivity页面:

// 接收第一个页面的传值
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("myname");
int age = bundle.getInt("age");
this.setTitle(name + ":" + age);
}

2、传递对象数据的核心代码:

Bundle bundle = new Bundle();
bundle.putSerializable("person", person);
intent.putExtras(bundle);
startActivity(intent);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
// 接收Serializable对象
Person data = (Person) bundle.getSerializable("person");

三、Activity生命周期:

1、Activity一生中有七种不同的状态。

  • onCreate()
  • onStart()
  • onResume()
  • onPause()
  • onStop()
  • onRestart()
  • onDestroy()

A、七个生命周期组合:

  • onCreate、onStart、onResume:启动应用程序
  • onPause、onStop:失去焦点
  • onRestart、onStart、onResume:重新获得焦点
  • onPause、onStop、onDestroy :退出应用程序

B、七个生命周期按阶段划分:

  • onCreate() --- onDestroy()            完整生命周期    The entire lifetime
  • onStart() --- onStop()                    可见生命周期     The visible lifetime:
  • onResume() --- onPause()            前沿生命周期(焦点生命周期)    The foreground lifetime:

四、任务与回退栈:

(一)、任务Task:

1、概念:

一个任务(task)就是在执行某项工作时与用户进行交互的Activity的集合。这些Activity按照被打开的顺序依次被安排在一个堆栈中(回退栈)。

(二)、回退栈:

1、概念:

在当前的Activity启动了另一个Activity时,这个新的Activity被放到了堆栈的顶部,并且带有焦点。前一个Activity并没有消失,而是保存在回退栈中,此时它处于停止状态。

(三)、Activity和Task的默认行为的总结:

1、当Activity A启动Activity B时,ActivityA被终止,但是系统保留了它的状态(如滚动条的位置和录入表单的文本)。如果用户在Activity B中按回退按钮,Activity A会使用被保存的状态来进行恢复。

2、当用户通过按主页(Home)按钮离开一个任务时,当前的Activity会被终止,并且被放入后台。系统会保留任务中每个Activity的状态。如果用户随后通过选择启动图标来恢复这个任务,那么任务会来到前台,并且恢复了堆栈顶部的Activity。

五、Activity启动模式

(一)、Activity启动模式设置:

        <activity android:name=".MainActivity" android:launchMode="standard" />

(二)、Activity的四种启动模式:

    1. standard 点一个创建一个。每个窗的getTaskId()保持不变,但是this.hashCode()发生改变。

    2. singleTop activity 压着创建新的,若A被别的窗体压着,则创建

    3. singleTask 被压住就创建新的并销毁旧的 onNewIntent()

    4. singleInstance每次跳转都创建新的回退栈