活动的4种状态:
- 运行状态:活动位于返回栈栈顶,活动处于运行状态。
- 暂停状态:活动不处于栈顶,但仍然可见,系统资源吃紧时会被吸收。
- 停止状态:不再处于栈顶,完全不可见,随时会被系统回收。
- 销毁状态:一个活动从返回栈中移除后变成了销毁状态。
活动生存期:
- onCreate();第一次被创建时调用,活动的初始化操作。
- onStart();活动不可见变为可见时调用。
- onResume();用户进行交互时调用。
- onPause();系统准备去启动或恢复另一个活动的时候调用。
- onStop;活动完全不可见时调用。
- onDestory();活动被销毁之前调用。
- onRestart();活动由停止状态变为运行状态之前调用。活动被重新启动了。
完成生存期:onCreate-->onDestory()
可见生存期:onStart-->onStop()(活动对于用户是可见的,即便无法和用户进行交互。)
前台生存期:onResume-->onPause()(活动处于运行状态,活动可以和用户进行交互。)
活动的启动模式:
-
standard:默认的启动模式
-
singleTop:返回栈的栈顶已经是该活动,则直接使用它,不再创建新的活动。
-
singleTask:使某个活动在整个应用程序中只存在一个实例,每次启动该活动时,返回栈中是否存在该活动的实例,并把在这活动之上所有活动统统出栈。没有的话,创建一个新的实例。
-
singleInstance:singleInstance模式的活动会启用一个新的返回栈来管理这个活动。
知晓当前是在哪一个活动:
getClass().getSimpleName()
随时随地退出程序:
public static List<Activity> activities = new ArrayList<>();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
启动活动最优写法:
FirstActivity
Intent intent = getIntent();
String data = intent.getStringExtra("param1");
String data2 = intent.getStringExtra("param2”);
Log.d(TAG, data);
Log.d(TAG, data2);
//给上个页面提供intent传递参数的办法,getParam()用来取出方法
public static void actionStart(Context context, String data1, String data2){
Intent intent = new Intent(context,LiveMainActivity.class);
intent.putExtra("param1", data1);
intent.putExtra("param2", data2);
context.startActivity(intent);
}
SecondActivity
FirstActivity.actionStart(this,”data1啊", “data2啊”);
参考文档:《第一行代码》[郭霖]