1-AI--Activity生命周期

作者: e4e52c116681 | 来源:发表于2018-08-23 17:09 被阅读10次

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>

本文由张风捷特烈原创,转载请注明

相关文章

  • 1-AI--Activity生命周期

    1.ActivityLifeCycle:测试生命周期的Activity2.CommonActivity是一个普通的...

  • Vue生命周期

    什么是生命周期方法?生命周期钩子=生命周期函数=生命周期事件 Vue生命周期方法分类  创建期间的生命周期方法: ...

  • Activity,Fragment,Service生命周期图

    Activity生命周期 Fragment生命周期 Service生命周期

  • 10,vue生命周期

    生命周期钩子=生命周期函数=生命周期事件 根据生命周期的不同分为三类: 创建阶段的生命周期 运行阶段的生命周期 销...

  • 微信小程序生命周期的记录

    小程序中生命周期分为3类: 应⽤的生命周期 页面的生命周期 组件的生命周期 一、生命周期 1. 应⽤的生命周期[h...

  • Lifecycle 生命周期源码解析

    目录: 什么生命周期 什么是生命周期感知型组件 Activity是如何把生命周期传给生命周期感知组件的 生命周期 ...

  • Vue生命周期

    Vue生命周期详解 一、Vue生命周期 与 作用 (生命周期钩子就是生命周期函数) (1)Vue生命周期:每个Vu...

  • uni-app微信小程序开发 - 生命周期

    uni-app的生命周期分为应用生命周期和页面生命周期还有组件生命周期。 应用生命周期[https://uniap...

  • 【小程序】生命周期

    小程序生命周期分为两类:应用生命周期和页面生命周期。 应用生命周期 应用生命周期包括onLaunch、onShow...

  • Java基础知识整理3——Android篇

    一、activity生命周期,fragment生命周期,broadcastReceiver生命周期,service...

网友评论

  • 明明很安静:文章标题前面部分是啥意思
    明明很安静:@张风捷特烈 这样标题不太容易理解
    e4e52c116681:最近在总结安卓,是我的分类表识,1-AI表表示A类,1区(即Activity),的第一个知识点

本文标题:1-AI--Activity生命周期

本文链接:https://www.haomeiwen.com/subject/cxymiftx.html