android Activity 周期内的7大事件

1,首先我们需要写测试的周期的例子

新建一个项目,android_period

2,创建一个MainActivity 和 SecondActivity

MainActivity 中的java代码

package com.qiniu.liuhanlin.android_learning;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        System.out.println("MainActivity---> onCreate");
        Button btn = (Button) findViewById(R.id.test_period);
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        Intent intent = new Intent();
                        intent.setClass(MainActivity.this, SecondActivity.class);
                        MainActivity.this.startActivity(intent);
                    }
                }).start();

            }
        });


    }
    @Override
    protected void onPause(){
        super.onPause();
        System.out.println("MainActivity---> onPause");

    }
    @Override
    protected void onStop(){
        super.onStop();
        System.out.println("MainActivity---> onStop");
    }
    @Override
    protected void onStart(){
        super.onStart();
        System.out.println("MainActivity---> onStart");
    }
    @Override
    protected  void onResume(){
        super.onResume();
        System.out.println("MainActivity---> onResume");
    }
    @Override
    protected  void onRestart(){
        super.onRestart();
        System.out.println("MainActivity---> onRestart");
    }
    @Override
    protected void onDestroy(){
        super.onDestroy();
        System.out.println("MainActivity---> onDestroy");
    }

}

xml 代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.qiniu.liuhanlin.android_learning.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="test_period"
        android:layout_marginBottom="268dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:id="@+id/test_period" />

</RelativeLayout>

SecondActivity中的java代码

package com.qiniu.liuhanlin.android_learning;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        System.out.println("SecondActivity---> onCreate");
    }
    @Override
    protected void onPause(){
        super.onPause();
        System.out.println("SecondActivity---> onPause");

    }
    @Override
    protected void onStop(){
        super.onStop();
        System.out.println("SecondActivity---> onStop");
    }
    @Override
    protected void onStart(){
        super.onStart();
        System.out.println("SecondActivity---> onStart");
    }
    @Override
    protected  void onResume(){
        super.onResume();
        System.out.println("SecondActivity---> onResume");
    }
    @Override
    protected  void onRestart(){
        super.onRestart();
        System.out.println("SecondActivity---> onRestart");
    }
    @Override
    protected void onDestroy(){
        super.onDestroy();
        System.out.println("SecondActivity---> onDestroy");
    }
}

xml代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.qiniu.liuhanlin.android_learning.SecondActivity">
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:text="hello_second"
        android:id="@+id/hello_second" />

</RelativeLayout>

2,运行代码

运行顺序,进入MainActivity后点击button按钮,进入SecondActivity后,点击返回键

log 打印如下,log打印打印System.out 的输出信息。点击filter,输入filter name和log tag为System.out 。

打印如下

06-20 14:24:34.401 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onCreate
06-20 14:24:34.402 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onStart
06-20 14:24:34.405 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onResume
06-20 14:24:40.536 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onPause
06-20 14:24:40.558 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onCreate
06-20 14:24:40.558 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onStart
06-20 14:24:40.560 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onResume
06-20 14:24:40.931 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onStop
06-20 14:24:53.048 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onPause
06-20 14:24:53.058 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onRestart
06-20 14:24:53.059 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onStart
06-20 14:24:53.060 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: MainActivity---> onResume
06-20 14:24:53.469 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onStop
06-20 14:24:53.470 7865-7865/com.qiniu.liuhanlin.android_learning I/System.out: SecondActivity---> onDestroy

这样我们就看到了完整的Activity周期。

周期函数说明如下:

一个Activity的创建顺序执行:onCreate,onStart,onResume

从FirstActivity启动SecondActivity时,顺序调用:FirstActivity的onPause,然后SecondActivity的onCreate,onStart,onResume,最后是FirstActivity的onStop

七大事件:

onCreate:
  当这个Activity第一次被创建的时候调用,在里面去设置布局文件、或者对按钮绑定监听器等一些静态的操作;

onStart:
  当这个Activity能被看到的时候调用;

onResume:
  当这个Activity能获得用户焦点,用户能操作这个Activity的时候调用;

onPause:
  当要启动另一个Activity时调用,例如当你的程序在运行时,有一个来电,系统调用电话,你的程序被遮挡住时调用,一般在里面写一些保存当前Activity操作数据的代码,以便恢复操作时还原数据;

onStop:
  当这个Activity对用户而言不可见的时候调用,如果上一个Activity调用出来的是一个小的对话块,没能完全遮挡住这个Activity,则不会调用上一个Activity的onStop;

onRestart:
  当一个Activity对用户不可见了以后,但是没有被销毁,再次要显示的时候,就最先调用onRestart,而不需要再调用onCreate;

onDestory:
  销毁Activity,如果你在代码里明确调用了finish方法,则会调用销毁,或者当系统资源不够用的时候,也会自动销毁不可见的Activity,如果再启用已经被销毁的Activity时,需要再调用onCreate;

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值