Activity生命周期实例讲解

   2015-07-27 0
核心提示:这篇文章介绍了Activity中7个与生命周期有关的函数,使用实例代码说明他们的使用方法

 Activity中有7个与生命周期有关的函数。其中onCreated()是activity第一次被启动时执行的,主要是初始化一些变量,onRestart()是当前activity重新被启动时调用的;绑定一些监听器等;on Start()是activity界面被显示出来的时候执行的;onResume()是当该activity与用户能进行交互时被执行;onPause()是另一个activity被启动,当前的activity就被暂停了,一般在该函数中执行保存当前的数据;on Stop()表示另一个activity被启动完成时,当前activity对用户同时又完全不可见时才调用的;onDestroy()是退出当前activity时调用的,当然如果程序中调用finish()或者说android系统当前资源不够用时就会被调用。
当用多个activity在执行时,这时候android系统会自动将这些activity压入栈中并且总是显示最顶的那个activity,这个栈在android叫做task,但是这个栈只支持压入和弹出操作,不支持排序插入等操作。
Activity的7个生命周期函数中的on Stop()函数被调用时是在其对应的activity被另外的activity完全遮挡的时候,如果只有部分遮挡,则不会被调用。部分遮挡一般是以消息activtiy的形式出现,这个只需在AndroidManifest.xml中将其对于的activity的主题设置theme中更改即可。
这7个周期函数,当系统资源不够时,其中onPause(),on Stop(),onDestroy()是有可能被系统kill掉的,但其它4个是不会被kill掉。
参考资料为mars老师的资料。
官方给出关于这7个生命周期的图如下:
Activity生命周期实例讲解
  

下面这个实验是有2个activity,第1个activity中有一个按钮调用第2个activity,并且每个activity都重写了这7个生命周期函数,每个生命周期中打印出一条语句,以表示是是哪个activity在执行哪个生命周期函数。
实验过程当显示出了第1个activity后,单击Next Activity!按钮,这是会显示第2个activity,然后又按系统的返回键,返回第1个界面。
这时候打印出来的结果如下图所示:
Activity生命周期实例讲解
 
由此可见,一开始程序运行时是首先调用第1个activity的onCreate(),on Start(),onResume()函数,然后按下button后,调用第1个activity的onPause(),和第2个activity的onCreate(),on Start(),onResume()函数,然后接着调用第1个activity的on Stop(),当按下系统返回键时,这时会调用第2个activity的onPause(),接着是第1个activity的onRestart(),on Start(),onResume(), 最后是调用第2个的on Stop()和onDestroy().
界面1如下所示:
 
Activity生命周期实例讲解 
MainActivity.java:

复制代码 代码如下:

package com.example.lifeone;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {

    private Button btn;
    @Override
    public void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);

 btn = (Button)findViewById(R.id.next_activity);
 btn.setText(R.string.next_activity);
 System.out.println("first activity: onCreate()");
 btn.setOnClickListener(new MyNextActivity());
    }
    @Override
    protected void onDestroy() {
 System.out.println("first activity: onDestroy()");
 super.onDestroy();
    }
    @Override
    protected void onPause() {
 System.out.println("first activity: onPause()");
 super.onPause();
    }
    @Override
    protected void onRestart() {
 System.out.println("first activity: onRestart()");
 super.onRestart();
    }
    @Override
    protected void onResume() {
 System.out.println("first activity: onResume()");
 super.onResume();
    }
    @Override
    protected void on Start() {
 System.out.println("first activity: on Start()");
 super.on Start();
    }
    @Override
    protected void on Stop() {
 System.out.println("first activity: on Stop()");
 super.on Stop();
    }

    class MyNextActivity implements OnClickListener
    {
 public void onClick(View v) {
 Intent intent = new Intent();
 intent.setClass(MainActivity.this, SecondActivity.class);
 MainActivity.this.startActivity(intent);
 }

    }
}



SecondActivity.java:
复制代码 代码如下:

package com.example.lifeone;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;

public class SecondActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
 System.out.println("second activity:onCreate()");
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_second);
    }

    @Override
    protected void onDestroy() {
 System.out.println("second activity: onDestroy()");
 super.onDestroy();
    }
    @Override
    protected void onPause() {
 System.out.println("second activity: onPause()");
 super.onPause();
    }
    @Override
    protected void onRestart() {
 System.out.println("second activity: onRestart()");
 super.onRestart();
    }
    @Override
    protected void onResume() {
 System.out.println("second activity: onResume()");
 super.onResume();
    }
    @Override
    protected void on Start() {
 System.out.println("second activity: on Start()");
 super.on Start();
    }
    @Override
    protected void on Stop() {
 System.out.println("second activity: on Stop()");
 super.on Stop();
    }

}

 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • Activity 基本生命周期
    Activity 基本生命周期
    现在讨论activity生命周期的文章已经很多了,但是有时候看得太多反而会觉得思绪很乱。这篇博的目的就是帮助你快速的理清思路,也是自己学习的一些总结。首先什么是Activity? 在很多的书籍里面将其直译为活动。因为像比如service之类的在后台跑着的服务,也可
    12-01 Activity
  • compileSdkVersion为23以下的应用运行在Android
    compileSdkVersion为23以下的应用运行在Android6.0的拍照权限处理[拍照时onActivityResult的data返回为null的处理办法]场景还原我以前开发的一个项目中需要适配到Android6.0,主要是权限的适配,其他权限基本都还能用,就拍照的有问题,能拍照但是没有获取到
    10-17 安卓开发
  • Android 研发安全 1-Activity 组件安全(上)
    Android 研发安全 1-Activity 组件安全(上)
    Activity组件是用户唯一能看见的组件,作为软件所有功能的显示载体,其安全性不言而喻。针对Activity组件安全,作为一个安卓开发者来讲需要在日常开发过程中注意两点:- Activity访问权限的控制- Activity被劫持本篇文章将分享Activity访问权限控制方面的安全
    10-09 安卓开发
  • android 面试—activity
    android 面试—activity
    本篇总结关于activity相关的面试内容。生命周期首先来看一下官网上面的关于activity的生命周期的图。 首先新建两个activity,MainActivity和BActivity,第一个activity可以跳转到BActivity,然后观察它们之间的生命周期的log public class MainActivity exten
    10-09 Activity
  • Activity到底是什么时候显示到屏幕上的呢?
    Activity到底是什么时候显示到屏幕上的呢?
    这两天我的包工头 歪龙木灵魂架构师王半仙Yrom 给我派了一个活:统计App冷启动时间。这个任务看上去不难,但是要求统计出来的时间要 准 ,要 特别准 。 意思就是,我必须要按Activity绘制到屏幕上这个时间节点作为标杆,来进行我的统计工作。毕竟如果是因为视
    10-07 Activity
  • 安卓的Activity跳转
    预计阅读时间: 8 分钟此教程纯属业余,如有言中,不甚荣幸。开发工具android studio,我们创建一个空白安卓应用。实现应用内屏幕间的跳转,以及数据传递;按钮点击事件的处理;主屏幕代码public class MainActivity extends Activity implements View.OnClick
    09-18 Activity
  • Activity - 朱利源的博客 - 博客频道 - CSDN.NET
    Activity - 朱利源的博客 - 博客频道 - CSDN.NE
    本系列主要是读书笔记,知识点百分之90来自 安卓开发艺术探索和安卓群英传,还有百分之10是自己的扩展与理解.欢迎吐槽生命周期 一.正常情况下生命周期如图正常生命周期 开起activity调用onCreate() onStart() onResume(),按下返回键 onPause() onStop() onDestr
    09-12 Activity
  • Activity的转场动画
    Activity的转场动画
    2. V4包中的ActivityOptionsCompat和 ActivityCompat2.1. makeCustomAnimation(Context context, int enterResId, int exitResId)热修复的文章仍然在写更新,希望等待热修复的亲们耐心. iphone 7 已经发布了,你会为新的iphone买单么? 我很喜欢苹果,因为它
    09-11 Activity
  • Android编程实现两个Activity之间共享数据及互
    这篇文章主要介绍了Android编程实现两个Activity之间共享数据及互相访问的方法,简单分析了Android中Activity数据共享与访问的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
  • Android中Service实时向Activity传递数据实例分析
    Android中Service实时向Activity传递数据实例分
    这篇文章主要介绍了Android中Service实时向Activity传递数据的方法,实例分析了Service组件基于线程操作实现数值实时传递的相关技巧,需要的朋友可以参考下
点击排行