Android四大组件——Acitivity生命周期

最近一直在做React Native开发 ,Android很多东西都记不牢了 所以重温一下

 

FirstActivity创建时:: onCreate --- onCreateView --- onStart --- onResume  之后进入运行态

跳转到 SecondActivity时,FirstActivity执行onPause方法 然后新的Activity执行  onCreate --- onCreateView -- onStart -- onResume   这时SecondActivity显示并可触摸,FirstActivity执行onStop方法  。 

此时按返回键回到FirstActivity,SecondActivity会执行onPause方法 , 然后FirstActivity执行 onRestart ---onStart  --- onResume ,SecondActivity执行 onStop --- onDestroy

1. 此时按返回键退出程序回到桌面,FirstActivity会执行 onPause --- onStop --- onDestroy

2.若按home回到桌面, 则FirstActivity只会执行 onPause --- onStop ,不会执行 onDestroy方法, 在系统内存不足或该程序被结束掉时,再执行onDestroy

 

关于横竖屏切换时的生命周期:

以下是在Android7.0版本测试:

竖屏切换到横屏时: Activity执行  onConfigurationChanged --- onPause --- onSaveInstanceState --- onStop --- onDestroy --- onCreate --- onCreateView --- onStart --- onRestoreInstanceState --- onResume

此时切换回竖屏: Activity执行 onConfigurationChanged --- onPause --- onSaveInstanceState --- onStop --- onDestroy --- onCreate --- onCreateView --- onStart --- onRestoreInstanceState --- onResume

注 : android7.1 不会执行onConfigurationChanged 方法  (不排除个人原因)

记得以前测试的时候,横屏切换竖屏会执行2次生命周期

以下附上测试代码:

 

package com.li.zhuoyuan.hello;

import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    private String TAG = this.getClass().getName();
    private TextView tv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG, "onCreate");

        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.tv);
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(MainActivity.this, TwoActivity.class));
            }
        });
    }

    @Override
    public View onCreateView(String name, Context context, AttributeSet attrs) {
        Log.i(TAG, "onCreateView");
        return super.onCreateView(name, context, attrs);
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG, "onRestart");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, "onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "onResume");

    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG, "onPause");

    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG, "onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG, "onDestroy");
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        Log.i(TAG, "onSaveInstanceState");
        super.onSaveInstanceState(outState);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        Log.i(TAG, "onRestoreInstanceState");
        super.onRestoreInstanceState(savedInstanceState);
    }

    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        super.onConfigurationChanged(newConfig);
        Log.i(TAG, "onConfigurationChanged");

    }
}
package com.li.zhuoyuan.hello;

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;

import com.cari.promo.diskon.R;

public class TwoActivity extends AppCompatActivity {
    private String TAG = this.getClass().getName();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i(TAG, "onCreate");
        setContentView(R.layout.activity_main);
    }

    @Override
    public View onCreateView(String name, Context context, AttributeSet attrs) {
        Log.i(TAG, "onCreateView");
        return super.onCreateView(name, context, attrs);
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        Log.i(TAG, "onRestart");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.i(TAG, "onStart");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "onResume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.i(TAG, "onPause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.i(TAG, "onStop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.i(TAG, "onDestroy");
    }
} 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值