文档章节

Activity生命周期(2)—事件回调函数调用顺序

维他ViTa
 维他ViTa
发布于 2016/11/13 11:42
字数 573
阅读 563
收藏 0
  • 完全生命周期 onCreate() — onDestroy() :从Activity的生命周期建立到销毁的全部过程
  • 可是生命周期 onStart() — onStop():Activity在界面上从可见到不可见的过程
  • 活动生命周期 onResume — onPause() :Activity在屏幕最上层,并能与用户进行交互

示例程序

1.程序代码

(通过在生命周期函数中添加“日志点”的方法进行调试)

package com.jhincheung.activitylifecycle;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;

public class MainActivity extends Activity {
	private static String TAG = "LIFECYCLE";
	
	/*
	 * 完全声明周期开始时被调用,初始化Activity
	 */
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		Log.i(TAG,"(1)onCreate()");
		
		//定义按钮和按钮监听函数,通过用户点击按钮调用finish()函数结束程序
		Button button =(Button)findViewById(R.id.btn_finish);
		button.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View view) {
				finish();
			}
		});
	}
	
	/*
	 * 可视生命周期开始时被调用,对用户界面进行必要的更改
	 */
	@Override
	public void onStart() {
		super.onStart();
		Log.i(TAG, "(2)onStart()");
	};
	
	/*
	 * 在onStart()后被调用,用于恢复onSaveInstanceState()保存的用户界面信息
	 */
	@Override
	public void onRestoreInstanceState(Bundle savedInstanceState) {
		super.onRestoreInstanceState(savedInstanceState);
		Log.i(TAG, "(3)onRestoreInstanceState()");
	};
	
	
	/*
	 * 在活动周期开始时被调用,恢复被onPause()停止的用于界面更新的资源
	 */
	@Override
	protected void onResume() {
		super.onResume();
		Log.i(TAG, "(4)onResume()");
	}
	
	/*
	 * 在onPause后被调用,保存界面的临时信息
	 */
	@Override
	protected void onSaveInstanceState(Bundle outState) {
		super.onSaveInstanceState(outState);
		Log.i(TAG, "(5)onSaveInstanceState()");
	}
	
	/*
	 * 在重新进入可视生命周期前被调用,载入界面所需要的更改信息
	 */
	@Override
	protected void onRestart() {
		super.onRestart();
		Log.i(TAG, "(6)onRestart()");
	}
	
	/*
	 * 在活动生命周期结束时被调用,用来保存持久的数据或释放占用的资源
	 */
	@Override
	protected void onPause() {
		super.onPause();
		Log.i(TAG, "(7)onPause()");
	}
	
	/*
	 * 在可视化生命周期结束时被调用,用来释放占用的资源
	 */
	@Override
	protected void onStop() {
		super.onStop();
		Log.i(TAG, "(8)onStop()");
	}
	
	/*
	 * 在完全生命周期结束时被调用,释放资源,包括线程、数据连接等
	 */
	@Override
	protected void onDestroy() {
		super.onDestroy();
		Log.i(TAG, "(9)onDestory()");
	}
	
}

2.程序界面

3.调用顺序

(1)完全生命周期

启动ActivityLifeCycle — 点击”结束程序“按钮关闭程序

调用顺序:onCreate — onStart —onResume — onPause — onStop  — onDestroy

(2)可视生命周期

启动ActivityLifeCycle — 启动拨号程序 — 返回ActivityLifeCycle

调用顺序:

  • 启动:(1)—(2)—(4)
  • Activity被覆盖:(7)—(5)—(8)
  • 重新显示Activity:(6)—(2)—(4)

© 著作权归作者所有

维他ViTa
粉丝 14
博文 145
码字总数 45749
作品 0
深圳
程序员
私信 提问
Android 官方架构组件(一)——Lifecycle

什么是Lifecycle? Lifecycle 组件指的是 android.arch.lifecycle 包下提供的各种类与接口,可以让开发者构建能感知其他组件(主要指Activity 、Fragment)生命周期(lifecycle-aware)的类。...

Android小安
01/17
0
0
Android4.0-Fragment框架实现方式剖析(一)

经过反复的学习对比,个人觉得带着问题学习新知是最有效的学习方式,因此文本就以提问的方式来讲述Fragment框架实现方式。 1、什么是Fragment? Fragment包含在Activity中,Fragment只能存在...

程序袁_绪龙
2015/07/07
194
0
Service的生命周期与Activity生命周期区别

碰到一面试题 简述activity/service生命周期? 组件的生命周期 应用程序组件都有一个生命周期,从响应Intent的Android实例开始到这个实例被销毁。在这期间,他们或许有效或许无效,有效时或许...

xiahuawuyu
2012/07/24
1K
0
Android Studio教程07-Fragment的使用

目录 1. Fragment是什么 1.1. 设计原理和实例 2. 创建fragment 2.1. fragment的生命周期 2.2 添加用户界面:融入到Activity中 3. 管理fragment:FragmentManager 3.1. 执行片段事务 3.2. 与A...

Bricker666
01/21
0
0
Android Activity的生命周期详解

Activity是由Activity栈进管理,当来到一个新的Activity后,此Activity将被加入到Activity栈顶,之前的Activity位于此Activity底部。Acitivity一般意义上有四种状态: 1.当Activity位于栈顶时...

恰同学少年
2015/07/27
391
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql概览

学习知识,首先要有一个总体的认识。以下为mysql概览 1-架构图 2-Detail csdn |简书 | 头条 | SegmentFault 思否 | 掘金 | 开源中国 |

程序员深夜写bug
43分钟前
4
0
golang微服务框架go-micro 入门笔记2.2 micro工具之微应用利器micro web

micro web micro 功能非常强大,本文将详细阐述micro web 命令行的功能 阅读本文前你可能需要进行如下知识储备 golang分布式微服务框架go-micro 入门笔记1:搭建go-micro环境, golang微服务框架...

非正式解决方案
今天
3
0
前端——使用base64编码在页面嵌入图片

因为页面中插入一个图片都要写明图片的路径——相对路径或者绝对路径。而除了具体的网站图片的图片地址,如果是在自己电脑文件夹里的图片,当我们的HTML文件在别人电脑上打开的时候图片则由于...

被毒打的程序猿
今天
2
0
Flutter 系列之Dart语言概述

Dart语言与其他语言究竟有什么不同呢?在已有的编程语言经验的基础上,我们该如何快速上手呢?本篇文章从编程语言中最重要的组成部分,也就是基础语法与类型变量出发,一起来学习Dart吧 一、...

過愙
今天
2
0
rime设置为默认简体

转载 https://github.com/ModerRAS/ModerRAS.github.io/blob/master/_posts/2018-11-07-rime%E8%AE%BE%E7%BD%AE%E4%B8%BA%E9%BB%98%E8%AE%A4%E7%AE%80%E4%BD%93.md 写在开始 我的Arch Linux上......

zhenruyan
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部