http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 2446|回复: 4

[新手开发之旅] Android新手开发之旅-Activity的生命周期

[复制链接]
发表于 2018-12-10 15:47:43 | 显示全部楼层 |阅读模式
本帖最后由 liu 于 2018-12-10 15:47 编辑

Activity的生命周期



Android新手开发之旅【目录】



先来看一下activity的生命周期流程图:


         QQ截图20181210142228.png


由图可见一个最简单完整的生命周期流程顺序是:onCreate-->onStart- -> onResume --> onPause --> onStop --> onDestroy
1、当启动Activity时先调用onCreate方法
2、当Activity处于可见状态时调用onStart方法
3、当Activity可以得到用户焦点时调用onResume方法,Activity进入运行状态
4、当Activity被其他Activity覆盖或被锁屏时调用onPause方法,Activity进入暂停状态
5、当Activity由被覆盖状态回到前台或解锁屏时调用onResume方法,Activity会再次进入运行状态
6、当Activity处于不可见状态的时调用onStop方法,Activity进入停滞状态
7、当再次回到此Activity时先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,Activity再次进入运行状态
8、当Activity处于不可见状态或者被覆盖时,内存不足会杀死当前Activity,当用户回到当前Activity时会重新调用onCreate方法、onStart方法、onResume方法,进入运行状态




接下来看一下两个Activity之间跳转时它们的生命周期(MainActivity和SecondActivity):

MainActivity:
[Java] 纯文本查看 复制代码
package com.company.helloworld.firstapplication;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
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);
        Log.i("ActivityStatus", "MainActivity-----onCreate");

        Button button = (Button) findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                //Activity之间的跳转
                Intent intent = new Intent(MainActivity.this, SecondActivity.class);
                startActivity(intent);
            }
        });
    }

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

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

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

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

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

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

SecondActivity:
[Java] 纯文本查看 复制代码
package com.company.helloworld.firstapplication;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class SecondActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);
        Log.i("ActivityStatus", "SecondActivity-----onCreate");

        Button button = (Button) findViewById(R.id.btn);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                finish();
            }
        });
    }

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

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

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

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

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

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



布局代码就不贴了,就一个Button按钮,操作流程是先进入MainActivity,然后点击MainActivity中的按钮跳转到SecondActivity,接下来点击SecondActivity中的按钮结束掉SecondActivity返回到MainActivity中,看一下打印出来的日志:

         QQ截图20181210152406.png

执行方法顺序:
1、首先是进入MainActivity,依次执行onCreate-->onStart- -> onResume
2、点击MainActivity中按钮后进行跳转,首先执行MainActivity中的onPause ,然后依次执行SecondActivity中的onCreate-->onStart- -> onResume方法,最后执行MainActivity中的onStop方法
3、点击SecondActivity中的按钮结束SecondActivity返回MainActivity时,先执行SecondActivity中的onPause 方法,然后依次执行MainActivity中的onRestart-->onStart-->onResume,最后执行SecondActivity中的onStop和onDestroy方法






1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2018-12-10 15:53:43 | 显示全部楼层
我只是路过打酱油的。
发表于 2018-12-10 16:08:07 | 显示全部楼层
强烈支持楼主ing……
发表于 2018-12-10 17:25:24 | 显示全部楼层
真是难得给力的帖子啊。
发表于 2018-12-11 14:09:47 | 显示全部楼层
无回帖,不论坛,这才是人道。
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-6-11 07:25

© 2014-2021

快速回复 返回顶部 返回列表