------siwuxie95

在项目 ActivityLifeCircle 的 MainActivity.java 中添加方法:

onCreate()  onStart()  onResume()  onPause()  onStop()  onRestart()  onDestroy()

具体代码:

package com.siwuxie095.activitylifecircle;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//日志信息 这里直接输入sout,即可自动补全代码
System.out.println("onCreate"); } @Override
protected void onStart() {
super.onStart();
System.out.println("onStart");
} @Override
protected void onResume() {
super.onResume();
System.out.println("onResume");
} @Override
protected void onPause() {
super.onPause();
System.out.println("onPause");
} @Override
protected void onStop() {
super.onStop();
System.out.println("onStop");
} @Override
protected void onDestroy() {
super.onDestroy();
System.out.println("onDestroy");
} @Override
protected void onRestart() {
super.onRestart();
System.out.println("onRestart");
} }

如果安装了Android Virtual Device的话,就可以直接在控制台观察到Android程序的生命周期变化

1、首先打开程序,执行 onCreate  onStart  onResume

2、点击home键,回到桌面,执行 onPause  onStop (此Activity已不可见)

3、点击多任务键,找到ActivityLifeCircle程序,点击打开,执行 onRestart  onStart  onResume

4、点击返回键,回到桌面,执行 onPause  onStop  onDestroy

5、再次点击多任务键,找到该程序,点击打开,执行 onCreate  onStart  onResume(即一个全新的生命周期)

在两个Activity切换过程中,两个Activity的生命周期变化:

在ActivityLifeCircle中new一个新的Empty Activity:BAty,工程结构如下:

将MainActivity.java中的七个方法中的日志信息改为A,同时为BAty.java添加7个方法,

并输出日志信息为B,如下:

MainActivity.java:

package com.siwuxie095.activitylifecircle;

import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//日志信息 这里直接输入sout,即可自动补全代码
System.out.println("A onCreate");
//通过按钮启动B Activity
findViewById(R.id.btnStartBAty).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(MainActivity.this,BAty.class));
}
}); } @Override
protected void onStart() {
super.onStart();
System.out.println("A onStart");
} @Override
protected void onResume() {
super.onResume();
System.out.println("A onResume");
} @Override
protected void onPause() {
super.onPause();
System.out.println("A onPause");
} @Override
protected void onStop() {
super.onStop();
System.out.println("A onStop");
} @Override
protected void onDestroy() {
super.onDestroy();
System.out.println("A onDestroy");
} @Override
protected void onRestart() {
super.onRestart();
System.out.println("A onRestart");
} }

BAty.java:

package com.siwuxie095.activitylifecircle;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; public class BAty extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_baty);
System.out.println("B onCreate");
} @Override
protected void onStart() {
super.onStart();
System.out.println("B onStart");
} @Override
protected void onResume() {
super.onResume();
System.out.println("B onResume");
} @Override
protected void onPause() {
super.onPause();
System.out.println("B onPause");
} @Override
protected void onStop() {
super.onStop();
System.out.println("B onStop");
} @Override
protected void onDestroy() {
super.onDestroy();
System.out.println("B onDestroy");
} @Override
protected void onRestart() {
super.onRestart();
System.out.println("B onRestart");
} }

为activity_main.xml添加一个 TextView 和 Button,

为activity_baty.xml添加一个 TextView

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
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.siwuxie095.activitylifecircle.MainActivity"
android:baselineAligned="false"
android:orientation="horizontal"> <TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="这是A Activity"
android:layout_weight="1" /> <Button
android:text="启动B Activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView2"
android:layout_toEndOf="@+id/textView2"
android:layout_marginTop="79dp"
android:id="@+id/btnStartBAty" />
</LinearLayout>

activity_baty.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:id="@+id/activity_baty"
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.siwuxie095.activitylifecircle.BAty"> <TextView
android:text="这是B Activity"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/textView"
android:layout_alignParentTop="true" />
</RelativeLayout>

1、打开程序,执行 A onCreate   A onStart   A onResume

2、点击 启动B Activity,执行 A onPause   B onCreate   B onStart   B onResume   A onResume

(即在B呈现出来之前,A还是可以呈现的,所以A 只执行了onPause,在B完全呈现出来之后,A才执行onStop)

这种情况是B是不透明的,完全遮住了A,如果B是透明的或没有遮住A,A的生命周期如下:

在AndroidManifest.xml的BAty:<activity>…</activity>标签中添加dialog类型的theme:

AndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.siwuxie095.activitylifecircle"> <application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".BAty"
android:theme="@style/Base.Theme.AppCompat.Dialog" >
</activity>
</application> </manifest>

此时点击 启动B Activity,执行A onPause   B onCreate   B onStart   B onResume

没有执行A onStop

回到A Activity(回到A Activity只需点击周围空白即可),执行B onPause

A onResume   B onStop   B onDestroy (B onPause之后,A立马就 onResume,

然后才是B的onStop和onDestroy)

【made by siwuxie095】

Activity生命周期(二)的更多相关文章

  1. Android之Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

    转载请注明出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了 ...

  2. Activity生命周期以及启动模式对生命周期的影响(二)

    前面一篇文章概述了Android四大组件之一的Activity生命周期方法的调用先后顺序,但对于非标准启动模式下Activity被多次调用时的一些生命周期方法并未详细阐述,现在针对该情况着重记录. 现 ...

  3. Android学习路线(十二)Activity生命周期——启动一个Activity

    DEMO下载地址:http://download.csdn.net/detail/sweetvvck/7728735 不像其他的编程模式那样应用是通过main()函数启动的.Android系统通过调用 ...

  4. Activity生命周期 onCreate onResume onStop onPause (转)

    Android应用开发提高系列(6)——Activity生命周期 onCreate 和 onResume 在程序启动时候都会启动, 所有有些需要在onCreate onResume中都要实现的功能,之 ...

  5. Android体系结构及activity生命周期

    Android的系统架构采用了分层架构的思想,如图1所示.从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核 Android的系统架构图    每层 ...

  6. Android学习整理之Activity生命周期篇

    一.Activity生命周期说明   Activity的四种状态: ⒈活动状态(Active or Running):也称为运行状态,处于Activity栈顶,在用户界面中最上层,完全能被用户看到,能 ...

  7. onAttachedToWindow()在整个Activity生命周期的位置及使用

    onAttachedToWindow在整个Activity的生命周期中占据什么位置? 为什么要在onAttachedToWindow中修改窗口尺寸? 一.onAttachedToWindow在Acti ...

  8. Activity生命周期,状态保存恢复(经典)

    一.整体框架 二.main.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android&qu ...

  9. Android查缺补漏--Activity生命周期和启动模式

    一.生命周期 onCreate():启动Activity时,首次创建Activity时回调. onRestart():再次启动Activity时回调. onStart():首次启动Activity时在 ...

  10. 【Android 应用开发】Activity生命周期 与 Activity 之间的通信

    一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...

随机推荐

  1. Python学习笔记——Day3

    Python字典(Dictionary) 字典是一种可变容器模型,可存储任意类型对象. 字典的每个键值(key => value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花 ...

  2. 配置recovery_min_apply_delay后重启standby节点报错:psql: FATAL: the database system is starting up

    环境: pg版本:PostgreSQL 9.4.4 on x86_64 系统版本:CentOS release 6.6 linux内核版本:2.6.32-504.8.1.el6.x86_64 今天测试 ...

  3. Python chr() ord() unichr()

    chr()函数用一个范围在range(256)内的(就是0-255)整数作参数,返回一个对应的字符. unichr()跟它一样,只不过返回的是Unicode字符,这个从Python 2.0才加入的un ...

  4. Jquery数组操作

    jQuery的数组处理,便捷,功能齐全. 最近的项目中用到的比较多,深感实用,一步到位的封装了很多原生js数组不能企及的功能. 最近时间紧迫,今天抽了些时间回过头来看 jQuery中文文档 中对数组的 ...

  5. C++多重继承带来的问题

    首先上图,咱们看图说话!   橙色表示变量,使用private修饰. 如图,假设Person类的变量name只能通过input方法来输入. 那么继承自Person的Student及Teacher类中s ...

  6. [HTML5]HTML语义(Semantics)

    HTML 是有含义的 语义指的是计算机语言定义的符号有其规范的含义,HTML中的标签.属性和属性值都有其约定的含义. 语义和默认样式有所不同,默认样式是浏览器设定的一些常用标签的表现形式,而语义化的主 ...

  7. php 二维数组(没啥技术含量)

    <?php $cars = array( array('benchi',20,18), array('baoma',30,21), array('aodi',23,9) ); echo $car ...

  8. [家里蹲大学数学杂志]第033期稳态可压Navier-Stokes方程弱解的存在性

    1. 方程  考虑 $\bbR^3$ 中有界区域 $\Omega$ 上如下的稳态流动: $$\bee\label{eq} \left\{\ba{ll} \Div(\varrho\bbu)=0,\\ \ ...

  9. for语句

    一.for语句的格式格式1:for (控制变量初始化表达式;条件表达式;增量表达式)  语句1; 格式2:for (控制变量初始化表达式;条件表达式;增量表达式){ 语句1;  语句2;  -} 注意 ...

  10. 这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script

    这些年我们一起搞过的持续集成~Jenkins+Perl and Shell script ##转载注明出处:http://www.cnblogs.com/wade-xu/p/4378224.html ...