Activity概述
Activity(活动)是Android应用程序中最基本的组成单位。
Activity主要负责创建显示窗口,一个Activity对象通常就代表了一个单独的屏幕。
Activity是用户唯一可以看得到的组件,用来与用户进行交互的。
Activity是通过一个Activity栈来进行管理,当前显示的Activity被放到栈顶 。
Activity生命周期
方法 | 功能描述 |
onCreate() | Activity初次创建时被调用,在该方法中一般进行一些静态设置,如创建View视图、进行数据绑定等。 |
onStart() | 当Activity对用户即将可见的时候调用。 |
onRestart() | 当Activity从停止状态重新启动时调用。 |
onResume() | 当Activity将要与用户交互时调用此方法,此时Activity在Activity栈的栈顶,用户输入的信息可以传递给它。 |
onPause() | 当系统要启动一个其他的Activity时(其他的Activity显示之前),这个方法将被调用,用于提交持久数据的改变、停止动画等 |
onStop() | 当另外一个Activity恢复并遮盖住当前的Activity,导致其对用户不再可见时,这个方法将被调用 |
onDestroy() | 在Activity被销毁前所调用的最后一个方法 |
声明周期的调用顺序
(1)启动activity,然后按返回键退出。
onCreate()->onStart()->onResume()
onPause()->onStop()->onDestory()
(2)启动activity,按Home键显示桌面,再点程序图标进入应用程序。
onCreate()->onStart()->onResume()
onPause()->onStop()
onRestart()->onStart()->onResume()
(3)启动activityA,在启动activityB
AonCreate()->AonStart()->AonResume()
AonPause()
BonCreate()->BonStart()->BonResume()
启动Activity
常用有两种方式:
- Intent intent = new Intent(MainActivity.this , NextActivity.class);
- Intent intent = new Intent();
- intent.setClass(MainActivity.this , NextActivity.class);
常用启动方法有两种:
- startActivity();
- startActivityForResult();
(1)启动activity,然后按返回键退出。
(2)启动activity,按Home键显示桌面,再点程序图标进入应用程序。
(3)启动activityA,在启动activityB
(4)启动activityA,在启动activityB,按返回键。
使用Intent实现页面跳转
Intent中文翻译成意图。Intent(意图)主要是解决Android应用的各项组件之间的通讯,Intent又分为两种,一种是显示意图,一种是隐式意图。
显示意图:明确指定组件名的Intent为显式意图,指定了Intent应该传递给那个组件。(讲解四种代码编写方式。)
Intent
/**
* 第一种方式
*/
Intent intent = new Intent();
intent.setClass(MainActivity.this, SecondActivity.class);
startActivity(intent);
/**
* 第二种方式
*/
Intent intent2 = new Intent(MainActivity.this, SecondActivity.class);
startActivity(intent2);
/**
* 第三种方式
*/
Intent intent3 = new Intent();
ComponentName componentName = new ComponentName(MainActivity.this, SecondActivity.class);
intent3.setComponent(componentName);
startActivity(intent3);
/**
* 第四种方式
*/
startActivity(new Intent(MainActivity.this, SecondActivity.class));
隐式意图:没有明确指定组件名的Intent为隐式意图,系统会根据隐式意图中设置的 动作(action)、类别(category)、数据URI等来匹配最合适的组件。
<activity android:name="com.example.day06_intent.ThridActivity">
<intent-filter >
<action android:name="thirdActivity"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
</activity>
/* 隐式跳转
*/
Intent intent4 = new Intent();
intent4.setAction("thirdActivity");
startActivity(intent4);
Activity的启动模式
一、standard(默认standard)

二、singleTop

三、singleTask

四、singleInstance