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. 如何让我们的PHP在Jexus中跑起来

    最近一段时间,经常看到不少的朋友在问,应该怎么设置才能够让Jexus支持PHP.其实,Jexus在很早之前就已经是可以支持PHP,像Apache或Nginx一样充当PHP的Web服务器的.不过由于没有 ...

  2. Memcached简介

    在Web服务开发中,服务端缓存是服务实现中所常常采用的一种提高服务性能的方法.其通过记录某部分计算结果来尝试避免再次执行得到该结果所需要的复杂计算,从而提高了服务的运行效率. 除了能够提高服务的运行效 ...

  3. Redis集群搭建与简单使用

    介绍安装环境与版本 用两台虚拟机模拟6个节点,一台机器3个节点,创建出3 master.3 salve 环境. redis 采用 redis-3.2.4 版本. 两台虚拟机都是 CentOS ,一台 ...

  4. CSharpGL(10)两个纹理叠加

    CSharpGL(10)两个纹理叠加 本文很简单,只说明如何用shader实现叠加两个纹理的效果. 另外,最近CSharpGL对渲染框架做了修改,清理一些别扭的内容(DoRender()前后的事件都去 ...

  5. CSS3 滤镜

    了解摄影活着美图秀秀之类美图软件的同学对滤镜肯定不陌生,CSS3对各种滤镜效果有了支持,可以做出很多好玩儿效果,走马观花了解一下 语法 filter: function(param); 很很多CSS3 ...

  6. TODO:一不顺眼就换字体Go之应用篇

    TODO:一不顺眼就换字体Go之应用篇 字体,文字的外在形式特征.就是文字的风格,是文字的外衣.好的字体让人看得舒服,让人更有看.写的欲望哦.2016-11-16 GO官方博客发布了同名Go字体,并没 ...

  7. Entity Framework 6 Recipes 2nd Edition(13-1)译 -> 优化TPT继承模型的查询

    问题 你想提高在一个TPT继承模型里的查询 解决方案 让我们假设有一个简单的TPT继承模型,如图Figure 13-1 Figure 13-1. A simple Table per Type inh ...

  8. iOS 之项目中遇到的问题总结

    昨天去一家公司面试,面试官问了我在项目开发中遇到过哪些问题,是什么引起的,怎样解决的? 当时由于有点小紧张只说出了一两点,现在就来好好总结一下. 问题: 1.两表联动 所谓的两表联动就是有左右两个表格 ...

  9. 为 Sublime Text 3059 配置 PHP 编译环境

    关于  Sublime Text 3059 的安装及汉化 请参看 http://www.xiumu.org/note/sublime-text-3.shtml 为 sublime Text 配置 PH ...

  10. springmvc环境搭建以及常见问题解决

    1.新建maven工程 a)  打开eclipse,file->new->project->Maven->Maven Project b)  下一步 c)   选择创建的工程为 ...