1.安卓基礎之Activity生命週期

1.ActivityLifeCycle:測試生命週期的Activity
2.CommonActivity是一個普通的Activity
3.DialogActivity是對話框型的Activity

9414344-c41b1f530a366308.gif

1、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);
    }
}

2、生命週期測試結果:

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>

後記、

1.聲明:
1.本文由張風捷特烈原創,轉載請註明
2.歡迎廣大編程愛好者共同交流
3.我的能力有限,若有不正之處歡迎你們批評指證,一定虛心改正
4.看到這裏,感謝你的喜歡與支持
2.關於我:

更多安卓技術歡迎訪問:安卓技術棧
個人github地址:歡迎star
張風捷特烈我的網站:http://www.toly1994.comjava

3.聯繫我
QQ:1981462002 郵箱:1981462002@qq.com 微信:zdl1994328
相關文章
相關標籤/搜索