Android之路-------Activity的详解
前言
由于接近放假,公司在赶项目所以前段LP比较忙,没什么时间总结和写博客,只是准备睡觉的时候看看书,每天看的不算多,大概10多页左右吧,不过每天坚持如此的话那也是一个庞大的数字。
今天LP的任务完成了,在领导还没分配任务之前再发布一篇关于Activity的博文..........
上一篇跟大家分享了Android的发展史、系统框架、还有Android的四大组件,下面LP就为大家介绍下四大组件之一的Activity。
知道了Android的历史之后,有没有让Android那种打不死的精神打动了,如果有的话就赶紧动身来学Android吧..
行了,废话不多说 Let's go
目录
- 活动(Activity)
- activity谁来管?
- 它是怎么个生老病死的?
- 启动模式
- 如何去使用它?
- 兄弟间该如何进行交互?
Android四大组件之一【Activity】
说到活动相信就算没有android基础的人都知道活动是个什么东西,因为它会经常出现在我们的身边,但是说到Activity,那就不一定了,不过懂一点英语的人直接翻译过来也知道是活动的意思,其实Android的活动和现实生活中的活动很相似,也可以理解为现实生活中的活动,我们正式开始吧。
说到Android的Activity,它到底是个什么东西呢? 它就是Android系统中的一个组件,专门负责与用户交互的,用户看到的每一个界面就是一个活动。
在Android中,Activity有基本的四种状态
1.运行状态 active/running
处于屏幕的最前端或者正在和用户交互着,称为运行状态/激活状态
2.暂停状态 Paused
当前activity失去焦点,被一个窗口或者非全屏的东西遮住一点点和被另一个透明的activity覆盖的时候,称为暂停状态
3.停止状态 Stoped
当前activity完全看不到了,称为停止状态
4.杀死状态 Killed
当activity处于“暂停状态” Or “停止状态”,这时候系统就可以对当前的activity从内存中删除或者终止它的进程,还有就是当系统内存不足的时候也会执行前者动作。
看电影
如果看完上面的还不能理解,那么你就可以理解为看电影,那部电影就是当前的activity.
1.电影正在播放的时候,称为运行状态
2.当我们点击暂停按钮的时候,屏幕不是变暗了吗?或者出现一个小广告,这个就可以理解为被另一个全屏透明的东西遮住和非全屏的小广告,这个就是暂停状态了
3.看港剧看多了,不想看了,就换部日本动作片来看,这时港剧不是看不到了吗?或者电脑直接黑屏了,反正看不到港剧,也就是当前的activity。这些都可以称为 停止状态
4.就是不想看电影了,直接手动把播放器关掉,处于暂停或者停止状态,内存不足的时候系统会自动关掉播放器
还不明白话,先不用钻牛角尖,先往下看,往后会慢慢的明白的.........
Activity该谁来管?
activity是由栈来管理的,先进后出,后进先出。每一个用户能看到的activity都是处于栈顶的,当内存不足的时候,栈里面最底下的那个activity就会被回收,直接上图最明了

它又是怎么个生老病死的呢?(生命周期)
这个我就不多说了,直接开始..
官方生命周期图,LP动了点手脚:

图看完了,紧接着是代码:
package com.leo.writeblog; import android.app.Activity;
import android.os.Bundle;
import android.util.Log; public class MainActivity extends Activity {
private final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "onResume");
}
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "onRestart");
}
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "onDestroy");
}
}
首次运行的日志如下:

按返回键退出的时候日志如下:

按小房子键的时候日志如下:

从新返回应用程序的时候日志如下:

还有就是当activity还可见的时候,也就是弹出小窗口,或者透明的activity的时候,只会执行 onPause方法,当activity再次获得焦点后就执行onResume
onCreate:activity第一次运行的时候才调用,而且只调用一次
onRestart:activity不可见后恢复可见时调用
onStart:activity可见的时候调用
onStop:activity不可见的时候调用
onResume:activity获取焦点时调用
onPause:activitiy失去焦点时调用
onDestroy:activity销毁时调用
启动模式
说到启动模式,它一共有四种,分别是standard、singleTop、singleTask、singleInstance,可以在AndroidManifest.xml文件中通过<activity>标签中的android:launchMode属性来选择启动模式。
standard:
这种模式是标准启动模式,也是默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种模式
singleTop
当启动模式为singleTop时,在启动活动的时候如果发现返回栈的站定已经是该活动,那么就直接使用,不必再创建
singleTask
当启动模式为singleTask的时候,每次启动活动都会在返回栈中检查是否存在该活动,如果存在,并发活动之上的活动统统出栈,否则就创建一个
singleInstance
启动模式 为singleInstance,这时会单独创建一个返回栈来管理这个活动,这样可以达到程序与程序之间共享活动
该如何去使用它?
我们在创建activity的时候必须继承Android自带的Activity,在使用时必须要在AndroidManifest.xml文件中注册,如下:

它们兄弟之间是怎么交流的呢?
是通过意图(Intent)进行通讯,数据传输,开启活动
什么是意图呢?
其实它就像我们生活中的快递员,负责帮我们送东西,Android系统里的意图就是上演着这个角色...
它可以与不同程序的活动交流,也可以启动不在同一个程序中的活动......等等一些,这里我就不做多介绍了,需要往下了解的可以到网上查下资料
Android之路-------Activity的详解的更多相关文章
- Android application 和 activity 标签详解
extends:http://blog.csdn.net/self_study/article/details/54020909 Application 标签 android:allowTaskRep ...
- Android组件系列----Activity组件详解
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/3 ...
- Android基础之Activity launchMode详解
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! Activity的lauchmode,是基础的属性,但也是App优化必须掌握的知识,它约束了Acti ...
- Android Fragment与Activity通讯详解
与activity通讯 尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例. Fragment可 ...
- Android 之窗口小部件详解--App Widget
Android 之窗口小部件详解--App Widget 版本号 说明 作者 日期 1.0 添加App Widge介绍和示例 Sky Wang 2013/06/27 1 App ...
- Android不规则点击区域详解
Android不规则点击区域详解 摘要 今天要和大家分享的是Android不规则点击区域,准确说是在视觉上不规则的图像点击响应区域分发. 其实这个问题比较简单,对于很多人来说根本不值得做为一篇博文写出 ...
- Android中Service的使用详解和注意点(LocalService)
Android中Service的使用详解和注意点(LocalService) 原文地址 开始,先稍稍讲一点android中Service的概念和用途吧~ Service分为本地服务(LocalServ ...
- Android中SurfaceView的使用详解
Android中SurfaceView的使用详解 http://blog.csdn.net/listening_music/article/details/6860786 Android NDK开发 ...
- 《Android群英传》读书笔记 (5) 第十一章 搭建云端服务器 + 第十二章 Android 5.X新特性详解 + 第十三章 Android实例提高
第十一章 搭建云端服务器 该章主要介绍了移动后端服务的概念以及Bmob的使用,比较简单,所以略过不总结. 第十三章 Android实例提高 该章主要介绍了拼图游戏和2048的小项目实例,主要是代码,所 ...
随机推荐
- java mysql驱动
mysql驱动方式有三种, 1.第一种是先把jar包放在项目的目录下,通过添加jar包,是使用相对地址的,这样把项目复制到其它电脑也可以用 2.第二种方法是导入外部的jar包,是绝对地址,如果项目要复 ...
- iOS开发系列之触摸事件
基础知识 三类事件中触摸事件在iOS中是最常用的事件,这里我们首先介绍触摸事件. 在下面的例子中定义一个KCImage,它继承于UIView,在KCImage中指定一个图片作为背景.定义一个视图控制器 ...
- Eclipse中使用git把项目导入到osc@git中
方便Eclipse用户使用Git把项目导入到osc@git中进行管理. Eclipse Git osc@git 一.原有项目: 项目名为TestGit 二.在osc@git上面创建一个新项目库. 填 ...
- python函数的使用和返回值
#coding=utf-8 def a(): i=1a() #函数的返回值,用return语句实现 #一个返回值的情况def test(): i=7 return iprint test() #多个返 ...
- PHP 关于文件操作的简单介绍
文件操作一直是Web程序员头疼的地方,而文件操作在CMS这样的系统中又是必须的.如今,PHP文件操作的函数内容已经非常强大,文件这部分也是学习PHP非常重要的一部分,希望大家不要忽略.这篇文章会简单介 ...
- css控制文字长度,超出长度显示...
css控制文字长度,超出长度显示... .style { max-width: 165px; overflow: hidden; white-space: nowrap; text-overflow: ...
- asp.net中调用COM组件发布IIS时常见错误 80070005解决方案
很多人在.net开发Web站点中引用了COM组件,调试时一切正常,但一发布到IIS下就提示如下错误: 检索 COM 类工厂中 CLSID 为 {} 的组件时失败,原因是出现以下错误: 80070005 ...
- 强引用,弱引用,4种Java引用浅解(涉及jvm垃圾回收)
http://www.jb51.net/article/49085.htm http://www.jb51.net/article/49085.htm
- centos U盘安装
1.版本 LiveCD 和 LiveDVD 是可以直接进入运行系统,类似win PE, 进入系统后有一个图标 install - HHD(从硬盘安装). netinstall 是用于网络安装和系统救援 ...
- Unique Binary Search Tree
Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...