------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. Android学习三:线程操作

    作为Android开发的组成部分,多线程的作用举足轻重,先来说说应用场景 1多线程使用场景 1.1正常使用中,经常有子线程来更新界面UI的需求,但是安卓不允许子线程更新UI 使用子线程处理UI,若线程 ...

  2. App_Offline.htm 功能

    在ASP.NET 2.0 站点根目录下,只要存在 App_Offline.htm 文件,那么所有对.aspx的请求都将转向App_Offline.htm .而且浏览器的地址栏显示的是所请求的.aspx ...

  3. javascript中的闭包解析

    学习javaScript已经有一段时间了,在这段时间里,已经感受到了JavaScript的种种魅力,这是一门神奇的语言,同时也是一门正在逐步完善的语言,相信在大家的逐步修改中,这门语言会逐步的完善下去 ...

  4. google protocol buffer 使用说明

    一:编译源码 下载地址:http://code.google.com/p/protobuf/downloads/list 下载后,根据编译说明进行编译. windows 平台,直接打开msvc中的工程 ...

  5. 2016中国VR开发者论坛第一期

    由VR界网和暴风魔镜联合举办的2016中国VR开发者论坛第一期已于3月2日下午5点在吉林动画学院圆满落幕,本次论坛云集了VR相关领域的精英,邀请了VR社交<极乐王国>.暴风魔镜.南京睿悦. ...

  6. springfox.documentation.service.ApiInfo配置示例

    Java Code Examples for springfox.documentation.service.ApiInfo The following are top voted examples ...

  7. 使用它tshark分析pcap的例子以及scapy下载地址

    转一篇cisco工作人员使用tshark分析pcap的文章,以及scapy的下载地址 http://blogs.cisco.com/security/finding-a-needle-in-a-pca ...

  8. How to configure Veritas NetBackup (tm) to write Unified and Legacy log files to a different directory

    Problem DOCUMENTATION: How to configure Veritas NetBackup (tm) to write Unified and Legacy log files ...

  9. 第四周psp

    10号 类别c 内容c 开始时间s 结束e 中断I 净时间T GUI 查资料 12:10 12:40 0m 30m GUI 安装QT 19:10 21:00 20m 90m GUI 学习QT 23:0 ...

  10. lua 和 c

    lua程序其实本身并不能执行,它必须依靠c语言编写的解释器来解释执行,或者说解释器为lua脚本的执行,提供了一个运行环境(lua_state),其中包括函数堆栈,内存分配和回收等机制. 理论上,lua ...