前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Android开发:Activity 生命周期详解

Android开发:Activity 生命周期详解

作者头像
零式的天空
发布2022-03-22 10:38:14
4460
发布2022-03-22 10:38:14
举报
文章被收录于专栏:零域Blog

什么是Activity

 Activity是Android SDK中Activity类的一个具体实例,负责管理用户与信息屏的交互。在一个应用程序中通常由多个Activity构成,在Manifest.xml中会指定一个主的Activity, 如下所示 <action android:name="android.intent.action.MAIN" />  当程序第一次运行时用户就会看这个Activity,这个Activity可以通过启动其他的Activity进行相关操作。当启动其他的Activity时这个当前的这个Activity将会停止,新的Activity将会压入栈中,同时获取用户焦点,这时就可在这个Activity上操作了。都知道栈是先进后出的原则,那么当用户按Back键时,当前的这个Activity销毁,前一个Activity重新恢复。

Activity的生命周期

话不多说,先上图

通过这个图我们可以很清晰的看到Activity的整个生命流程。 Activity其实是继承了ApplicationContext这个类

我们可以重写以下方法,如下代码:

代码语言:javascript
复制
public class Activity extends ApplicationContext {
       protected void onCreate(Bundle savedInstanceState);

       protected void onStart();

       protected void onRestart();

       protected void onResume();

       protected void onPause();

       protected void onStop();

       protected void onDestroy();
   }

下面我们来写一个Demo,更好地理解,新建一个项目,代码如下:

代码语言:javascript
复制
package com.waydrow.activityliftcircle;

import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
        setSupportActionBar(toolbar);

        FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
        fab.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                        .setAction("Action", null).show();
            }
        });

        System.out.println("on create");
    }

    @Override
    protected void onStart() {
        super.onStart();
        System.out.println("on start");
    }

    @Override
    protected void onResume() {
        super.onResume();
        System.out.println("on resume");
    }

    @Override
    protected void onPause() {
        super.onPause();
        System.out.println("on Pause");
    }

    @Override
    protected void onStop() {
        super.onStop();
        System.out.println("on stop");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        System.out.println("on destroy");
    }

    @Override
    protected void onRestart() {
        super.onRestart();
        System.out.println("on restrat");
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}

点击运行

显示界面如图,没有什么好说的

打开Logcat查看输出信息

我们可以清楚的看到,这个Activity的创建过程为 create->start->resume

Back键和Home键的区别

在上述运行状态下,分别点击界面的Back按钮和Home键,再次查看控制台输出 Back键

Home键

这两者的区别显而易见了,点击Back按钮后,此Activity会经历 pause->stop->destroy 此Activity弹出栈,程序销毁。 但是点击Home键,Activity并不会被立即销毁

后记

大家还可以尝试旋转屏幕、锁屏等后的Activity的状态,本文就不一一列举了 我的学习代码托管在Github上,链接为: 点我

参考资料

Activity详解 (生命周期、以各种方式启动Activity、状态保存,完全退出等) 两分钟彻底让你明白Android Activity生命周期(图文)! Android四大组件之——Activity的生命周期 (图文详解)

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-02-13,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是Activity
  • Activity的生命周期
    • 我们可以重写以下方法,如下代码:
      • 下面我们来写一个Demo,更好地理解,新建一个项目,代码如下:
        • 点击运行
          • 打开Logcat查看输出信息
          • Back键和Home键的区别
          • 后记
            • 参考资料
            相关产品与服务
            代码托管
            CODING 代码托管(CODING Code Repositories,CODING-CR)是为开发者打造的云端便捷代码管理工具,旨在为更多的开发者带去便捷、高效的开发体验,全面支持 Git/SVN 代码托管,包括代码评审、分支管理、超大仓库等功能。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档