1.ActivityLifeCycle: 测试生命周期的 Activity 2.CommonActivity 是一个普通的 Activity 3.DialogActivity 是对话框型的 Activity
activity 生命周期. gif
一, Activity
- 1.ActivityLifeCycle.java
- public class ActivityLifeCycle extends AppCompatActivity {
- private static final String TAG = "ActivityLifeCycle";
- @BindView(R.id.btn_task_activity)
- Button mBtnTaskActivity;
- @BindView(R.id.btn_dialog_activity)
- Button mBtnDialogActivity;
- @Override//Activity 第一次创建时调用
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.ac_lifecycle);
- ButterKnife.bind(this);
- Log.e(TAG, "onCreate:");
- Log.e("TASK_ID", "Task id is" + getTaskId());
- }
- @Override//Activity 可见的时候调用
- protected void onStart() {
- super.onStart();
- Log.e(TAG, "onStart:");
- }
- @Override//Activity 位于栈顶, 获取焦点时调用
- protected void onResume() {
- super.onResume();
- Log.e(TAG, "onResume:");
- }
- @Override//Activity 移除栈顶, 失去焦点时调用
- protected void onPause() {
- super.onPause();
- Log.e(TAG, "onPause:");
- }
- @Override// 由停止状态变为运行状态之前调用
- protected void onRestart() {
- super.onRestart();
- Log.e(TAG, "onRestart:");
- }
- @Override//Activity 不可见的时候调用
- protected void onStop() {
- super.onStop();
- Log.e(TAG, "onStop:");
- }
- @Override//Activity 销毁的时候调用
- protected void onDestroy() {
- super.onDestroy();
- Log.e(TAG, "onDestroy:");
- }
- @OnClick({R.id.btn_task_activity, R.id.btn_dialog_activity})
- public void onViewClicked(View view) {
- switch (view.getId()) {
- case R.id.btn_task_activity:
- // 跳转到 TaskActivity
- startActivity(new Intent(this, TaskActivity.class));
- break;
- case R.id.btn_dialog_activity:
- // 跳转到 DialogActivity
- startActivity(new Intent(this, DialogActivity.class));
- break;
- }
- }
- }
- 2.CommonActivity.java
- public class CommonActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.ac_task);
- ButterKnife.bind(this);
- }
- }
- 3.DialogActivity
- public class DialogActivity extends AppCompatActivity {
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.ac_dialog);
- }
- }
二, 生命周期测试结果:
1. 打开: onCreate==>onStart==>onResume
- E/ActivityLifeCycle: onCreate:
- E/ActivityLifeCycle: onStart:
- E/ActivityLifeCycle: onResume:
2. 跳转普通 Activity:onPause==>onStop
- E/ActivityLifeCycle: onPause:
- E/ActivityLifeCycle: onStop:
3. 从跳转的 Activity 返回: onRestart==>onStart==>onResume
- E/ActivityLifeCycle: onRestart:
- E/ActivityLifeCycle: onStart:
- E/ActivityLifeCycle: onResume:
4. 跳转到对话框 Activity:onPause
E/ActivityLifeCycle: onPause:
5. 从对话框 Activity 返回: onResume
E/ActivityLifeCycle: onResume:
6. 旋转屏幕 (相当于关闭再开启):onPause==>onStop==>onDestroy==>onCreate==>onStart==>onResume
- E/ActivityLifeCycle: onPause:
- E/ActivityLifeCycle: onStop:
- E/ActivityLifeCycle: onDestroy:
- E/ActivityLifeCycle: onCreate:
- E/ActivityLifeCycle: onStart:
- E/ActivityLifeCycle: onResume:
7. 关闭: onPause==>onStop==>onDestroy
- E/ActivityLifeCycle: onPause:
- E/ActivityLifeCycle: onStop:
- E/ActivityLifeCycle: onDestroy:
附录, 布局:
1.ActivityLifeCycle 布局: ac_lifecycle.xml
- <?xml version="1.0" encoding="utf-8"?>
- <android.support.constraint.ConstraintLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <Button
- android:id="@+id/btn_task_activity"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:text="打开 TaskActivity"
- android:textAllCaps="false"
- app:layout_constraintTop_toTopOf="parent"
- tools:layout_editor_absoluteX="30dp"/>
- <Button
- android:id="@+id/btn_dialog_activity"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:text="打开 DialogActivity"
- android:textAllCaps="false"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintHorizontal_bias="0.873"
- app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent"/>
- </android.support.constraint.ConstraintLayout>
2.CommonActivity 布局: ac_task.xml
- <?xml version="1.0" encoding="utf-8"?>
- <android.support.constraint.ConstraintLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <Button
- android:id="@+id/btn_start_self"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="16dp"
- android:text="打开自己"
- android:textAllCaps="false"
- app:layout_constraintTop_toTopOf="parent"
- tools:layout_editor_absoluteX="30dp"/>
- <Button
- android:id="@+id/button_start_others"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginLeft="8dp"
- android:layout_marginStart="8dp"
- android:layout_marginTop="16dp"
- android:text="打开别人"
- app:layout_constraintStart_toEndOf="@+id/btn_start_self"
- app:layout_constraintTop_toTopOf="parent"/>
- </android.support.constraint.ConstraintLayout>
3.DialogActivity 布局: ac_dialog.xml
- <?xml version="1.0" encoding="utf-8"?>
- <android.support.constraint.ConstraintLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:app="http://schemas.android.com/apk/res-auto"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
- <TextView
- android:id="@+id/textView"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="A01_DialogActivity"
- app:layout_constraintEnd_toEndOf="parent"
- app:layout_constraintStart_toStartOf="parent"
- tools:layout_editor_absoluteY="233dp"
- tools:ignore="MissingConstraints"/>
- </android.support.constraint.ConstraintLayout>
4.DialogActivity 对话框主题
- <activity
- android:name=".DialogActivity"
- android:label="DialogActivity"
- android:theme="@style/Theme.AppCompat.Light.Dialog">
- </activity>
来源: http://www.jianshu.com/p/734cf76d7091