Android之Activity小结
Acitivity:
四种状态:活动状态、暂停状态、停止状态、销毁状态
四种加载模式:standard ,singleTop,singleTask,singleInstance;
七大方法:onCreate(),onStart(),onRestart(),onResume(),onPause(),onStop(),onDestroy();
onCreate():当创建Activity时回调,该方法只调用一次。
onStart():当Activity被用户可见的时候调用 的方法。
onResume():恢复Activity时调用,Activity获得焦点时调用的方法,在调用onStart()之后一定要调用该方法
onPasuse():界面失去焦点时调用的方法
onStop():界面不可见时调用的方法
onDestroy():销毁Activity时回调,该方法也只能调用一次。
Android 中的Activity是以Activity栈的形式来管理Activity的,当前Activity为于栈顶。
详解:
四种状态:
活动状态:当前Activity,用户可见,可以获得焦点。
暂停状态:用户可见,不能获得焦点。
停止状态:用户不可见。
销毁状态:activity结束。
四种加载模式;
standard:标准模式 ,默认情况是该模式。
singleTop:Task栈顶单例模式
singleTask:Task栈内单例模式
singleInstance:全局单例模式
Android对Activity的管理:
Android采用Task的形式来管理Activity,当用户打开一个Android应用时,Ankdroid会为之创建一个Task,
然后启动这个应用的入口Activity,(注意:一个应用程序是由若干个Activity的组合)入口Activity是
<intent-filter..../>中配置的MAIN和LANCHER的ACtivity。
应用程序的Task可以理解成为一个Activity栈(先入后出),先启动的Activity为与栈底,后启动的位于栈顶。
=====================================//代码如下:===================
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.LZT.sqlitetry"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="21" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application> </manifest>
=======================================================================
1.默认模式:standard
当Activity为这么加载模式的时候,每次启动该Activity时会在原Task栈中创建一个新的Activity实例。
2.singleTop:
该模式与standard模式基本相似,但是有一点不同,如果要启动的Activity位于栈顶的时候,那就不必再创建出
一个Activity实例了。//可以理解字面意思
3.singleTask:
采用这种模式的Activity时,在同一个task中只会有一个该Activity的实例,具体分为下面三种情况:
*若启动的目标Activity不存在时,则会创建出一个Activity,并加入栈顶。
**若目标Activity已经存在,且位于栈顶,那么与singleTop行为相同
***若目标Activity已经存在但没有位于栈顶,那么系统会将该位于该Activity上的所有Activity移除Task,
使得实例推至栈顶。
4.singleInstance:
在整个应用程序中只能有一个Activity实例并且单独的位于一个栈中。
以上四种加载模式都需要在文件清单中进行配置:属于Activity的一个属性: LaucnchMode="singleTop"||"singleTask"
||"singleInstance"
Activity的另外一个属性:exported="ture"||"false",为true时表明该Activity可以被其他应用程序启动。
==============================================================
名为A的Activity的启动过程:
onCreate()--->onStart()---->onResume();
当前名为A的Activity,然后调用BActivity:
A.onPause()-->B.onCreate()---->B.onStart()---->B.onResume()---->A.onStop();
(A失去焦点了,B创建了,B创建了界面,B获得了焦点,A失去了界面。指A全部被覆盖,当A没被完全覆盖时不会调用onStop)
然后回调A的过程:
B.onPause()--->A.onRestart()--->A.onStart()--->A.onResume()--->B.onStop()--->B.onDestroy();
可以理解为正在玩游戏,然后有人打电话来了。
一个Activity销毁时可能的三种状况:
a:onPause()--->onStop()---onDestroy();
b:onPause()--->progressKill
c:onPause()--->onStop()--->progressKill
CPU可以根据情况直接kill掉一些Activity来节省内存。
Android之Activity小结的更多相关文章
- Android中Activity启动过程探究
首先追溯到Activity的启动,随便启动一个自己写的demo项目,使用DDMS进行debug标记,然后在Debug中把主线程暂停,可以看到调用栈.如下图所示: 于是我们先看android.app.A ...
- Android Camera 使用小结。两种方法:一是调用系统camera app,二是自己写camera程序。
源文链接:http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html Android Camera 使用小结 Android手机 ...
- Android之Activity启动流程详解(基于api28)
前言 Activity作为Android四大组件之一,他的启动绝对没有那么简单.这里涉及到了系统服务进程,启动过程细节很多,这里我只展示主体流程.activity的启动流程随着版本的更替,代码细节一直 ...
- Android中Activity的启动模式
简介 Android中的活动启动方式分为4种:standard, singleTop, singleTask, singleInstance.可以在AndroidManifest.xml中通过给< ...
- Android之Activity的生命周期
PS:写一发关于Activity的生命周期,也算是面试的重点内容. 学习内容: 1.Activity的生命周期 2.面对多种情况的时候Activity的生命周期 3.onSaveInstanceSta ...
- android开发------Activity生命周期
这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...
- Android课程---Activity中保存和恢复用户状态
onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chens ...
- Android课程---Activity 的生命周期
activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context 3.android.app.Applicat ...
- Android课程---Activity的创建
一.为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能.新的Activity的最基本的框架代码如下所示: package com.paad.myapplication; ...
随机推荐
- 64 位系统(win7/win8) 下使用C# 程序问题
1 C# 程序是控制台类,使用的组件如果是32位,建议在编译的时候,platform (X86,AnyCPU,X64)选择X86 .使用X86 模式编译,才能调用32位程序的API. 2 ASP. ...
- C++中的头文件(.h)和源文件(.cpp)都应该写什么?
头文件(.h):写定义和声明写类的声明(包括类里面的成员和方法的声明).函数原型.#define常数等,但是一般来说不写具体的实现.注意: 1.在写头文件的时候需要注意,在开头和结尾处必须按照如下样式 ...
- 分组函数group by和Oracle中分析函数partition by的用法以及区别
1.分组函数group by和Oracle中分析函数partition by的用法以及区别 2.开窗函数.
- Python常用模块之os和sys
1.OS常用方法 os.access(path, mode) # 检验权限模式 os.getcwd() #获取当前工作目录,即当前python脚本工作的目录路径 os.chdir("dirn ...
- Object C学习笔记20-结构体(转)
在学习Object C中的过程中,关于struct的资料貌似非常少,查阅了C方面的资料总结了一些学习心得! 一. 定义结构 结构体是一种数据类型的组合和数据抽象.结构体的定义语法如下: struct ...
- poj 3694 Network : o(n) tarjan + O(n) lca + O(m) 维护 总复杂度 O(m*q)
/** problem: http://poj.org/problem?id=3694 问每加一条边后剩下多少桥 因为是无向图,所以使用tarjan缩点后会成一棵树并维护pre数组 在树上连一条边(a ...
- CentOS7 64位下 MySQL5.7的安装与配置(YUM)
趁着11.11的时候在阿里云上弄了一云服务ECS(作为自己的节日礼物 > _ <) ,系统为CentOS的,打算弄一个人博客之类的,这些天正在备案当中(不知得多久). 忙里偷闲,在中午休息 ...
- 关于Linux环境变量DISPLAY的设置
问题描述:在个人PC(windows系统)安装了虚拟机,虚拟机中安装了Linux系统,Linux系统中安装了wireshark和firefox这两个程序,网上查阅可以通过设置DISPLAY环境变量指向 ...
- js实现区县联动
1. 引入区县联动函数如下,将provinceList中数据改为需要联动的数据信息 var addressInit = function(_cmbProvince, _cmbCity, _cmbAre ...
- java泛型<? extends E> 有上限通配符与<? Super E>有上限通配符
通配符?,?表示占位,表明将来使用的时候在指明类型 <?>无限定的通配符, 是让泛型能够接受未知类型的数据 <? extends E> 有上限通配符,能够接受指定类及其子类类型 ...