1、Activity简介

  四大组件之一的Activity组件,在应用中一个Activity可以用来表示一个界面,中文意思也可以理解为“活动”,即一个活动开始,代表Activity组件启动,活动结束,代表一个Activity的生命周期结束。一个Android应用必须通过Activity来运行和启动,Activity的生命周期交给系统统一管理。

  理解以下四个基本概念,将有助于我们更好的了解Android系统内部机制:

  Activity:活动,程序中的界面

  Application:应用程序

  Activity栈:管理Activity的栈结构

  Task:任务

2、Activity状态

在Android中,Activity拥有三个基本状态:
(一)Resumed:一个新Activity启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。
(二)Paused:当Activity被另一个透明或者Dialog样式的Activity覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它依然可见,但它已经失去了焦点故不可与用户交互。
(三)Stoped:当Activity被另外一个Activity覆盖,失去焦点并不可见时处于Stoped状态。

3、Activity生命周期

  生命周期方法详解:

  

  官方流程图:

  
代码清单:生命周期方法测试(MainActivity.java)

 package com.bothsunny.apps.a31_activity;

 import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; import com.orhanobut.logger.Logger; public class MainActivity extends AppCompatActivity { /**
* 当一个Activity创建时会调用该方法,我们可以在该方法中进行组件的初始化工作
*
* @param savedInstanceState
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Logger.i("MainActivity-onCreate");
} /**
* 在Activity可见,但还不能进行交互时会调用该方法
* 在onCreate之后调用
*/
@Override
protected void onStart() {
super.onStart();
Logger.i("MainActivity-onStart");
} /**
* 当Activity可以交互时调用
* 在onStart之后调用,该方法被调用后就表示Activity进入激活状态
* resumed状态
*/
@Override
protected void onResume() {
super.onResume();
Logger.i("MainActivity-onResume");
} /**
* 一个从stoped状态的Activity重新被激活时调用
* 接着会调用onStart()方法
*/
@Override
protected void onRestart() {
super.onRestart();
Logger.i("MainActivity-onRestart");
} /**
* 当前Activity被另一个Activity覆盖,失去焦点,但还可见,不能交互
* 那么此时当前Activity进入paused状态(暂停状态)
* 当此状态下Activity重新获取焦点时会再调用onResume()方法
*/
@Override
protected void onPause() {
super.onPause();
Logger.i("MainActivity-onPause");
} /**
* 当前Activity被另一个Activity完全覆盖,不可见且不可交互
* 那么此时当前Activity进入了stoped状态(停止状态)
* 此状态下的Activity被重新显示时,会调用onRestart()方法
*/
@Override
protected void onStop() {
super.onStop();
Logger.i("MainActivity-onStop");
} /**
* 当前Activity被销毁时调用,表示结束生命周期
*/
@Override
protected void onDestroy() {
super.onDestroy();
Logger.i("MainActivity-onDestroy");
}
}

4、Activity传递数据

  在Android中,不同的Activity实例可能运行在一个进程中,也可能运行在不同的进程中。因此我们需要一种特别的机制帮助我们在Activity之间传递消息。Android中通过Intent对象来表示一条信息,一个Intent对象不仅包含这个消息的目的地,还可以包含消息的内容,这好比一封Email,其中不仅应该包含收件地址,还可以包含具体的内容。对于一个Intent对象,消息“目的地”是必须的,而内容则是可选项。

Android核心组件 Activity组件的更多相关文章

  1. 详解 Android 的 Activity 组件

    Activity 的生命周期 和 J2ME 的 MIDlet 一样,在 android 中,Activity 的生命周期交给系统统一管理.与 MIDlet 不同的是安装在 android 中的所有的 ...

  2. Android的Activity组件

    本章主题是Activity组件:Activity是Android四大组价之一,其重要地位自然不用说.“Activity是应用程序中可见的交互组件的基类,大致上等同于传统桌面应用个程序开发中的窗体.”( ...

  3. Android 核心组件 Activity 之上

    核心组件的特征 1. 必须继承自特定的类(Activity 或者 Activity的子类) 2. 必须注册: 通常是AndroidManifest.xml的 <application> 中 ...

  4. Android 核心组件 Activity 之下

    创建新的Activity的方式: 1. 在相应的文件下 Ctrl + N  (Eclipse, Android中不知道是不是) 2. 创建类,继承自Activity或者Activity的子孙类, 并在 ...

  5. Android中Intent组件详解

    Intent是不同组件之间相互通讯的纽带,封装了不同组件之间通讯的条件.Intent本身是定义为一个类别(Class),一个Intent对象表达一个目的(Goal)或期望(Expectation),叙 ...

  6. Android源码——Activity组件的启动过程

    根Activity启动过程 Launcher启动MainActivity的过程主要分为6个步骤: 一.Launcher向ActivityManagerService发送一个启动MainActivity ...

  7. Android的四大组件之Activity

    Android的四大组件之Activity Activity:是Android组件中最基本也是最为常见用的四大组件(Activity,Service服务,Content Provider内容提供者,B ...

  8. 解开Android应用程序组件Activity的"singleTask"之谜

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6714543 在Android应用程序中,可以配 ...

  9. Android窗口管理服务WindowManagerService显示Activity组件的启动窗口(Starting Window)的过程分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/8577789 在Android系统中,Activ ...

随机推荐

  1. Mono 3.8发布:性能进一步改进,可伸缩性提升

    9月4日,Mono 3.8.0发布了.该版本的运行时带来了一些性能和可伸缩性方面的改进,同时完成了向Windows平台的移植. Mono遵循Gnome和Linux内核的版本编号策略,这意味着3.8是3 ...

  2. 【腾讯Bugly干货分享】跨平台 ListView 性能优化

    本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/FbiSLPxFdGqJ00WgpJ94yw 导语 精 ...

  3. Visual Studio Code 配置指南

    Visual Studio Code (简称 VS Code)是由微软研发的一款免费.开源的跨平台文本(代码)编辑器.在我看来它是「一款完美的编辑器」. 本文是有关 VS Code 的特性介绍与配置指 ...

  4. Java 程序的打包、签名和验证

    参考资料 该文中的内容来源于 Oracle 的官方文档.Oracle 在 Java 方面的文档是非常完善的.对 Java 8 感兴趣的朋友,可以直接找到这个总入口 Java SE 8 Document ...

  5. ABP源码分析三十六:ABP.Web.Api

    这里的内容和ABP 动态webapi没有关系.除了动态webapi,ABP必然是支持使用传统的webApi.ABP.Web.Api模块中实现了一些同意的基础功能,以方便我们创建和使用asp.net w ...

  6. Entity Framework 6 Recipes 2nd Edition(10-9)译 -> 在多对多关系中为插入和删除使用存储过程

    10-9. 在多对多关系中为插入和删除使用存储过程 问题 想要在一个无载荷的多对多关系中使用存储过程(存储过程只影响关系的连接表) 解决方案 假设有一个多对多关系的作者( Author)表和书籍( B ...

  7. AngularJs之三

    一.angularJs的指令模型ng-model指令 ng-model 指令 绑定 HTML 元素 到应用程序数据. 为应用程序数据提供类型验证(number.email.required).为应用程 ...

  8. C#设计模式-备忘录模式

    访问者模式的实现是把作用于某种数据结构上的操作封装到访问者中,使得操作和数据结构隔离.而本文要介绍的备忘者模式与命令模式有点相似,不同的是,命令模式保存的是发起人的具体命令(命令对应的是行为),而备忘 ...

  9. .Net使用Redis详解之ServiceStack.Redis(七)

    序言 本篇从.Net如何接入Reis开始,直至.Net对Redis的各种操作,为了方便学习与做为文档的查看,我做一遍注释展现,其中会对list的阻塞功能和事务的运用做二个案例,进行记录学习. Redi ...

  10. c#官方推荐md5通用加密类

    /// <summary> /// MD5加密 /// </summary> /// <param name="input">需要加密的字符串& ...