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; ...
随机推荐
- springboot2.04+mybatis-plus+swagger2+CodeGenerator
@author zhangyh SpringBoot技术栈搭建个人博客[项目准备] RESTful API就是一套协议来规范多种形式的前端和同一个后台的交互方式 原型设计 事实上,我是直接先去找的原 ...
- iOS之出现( linker command failed with exit code 1)错误总结
本文出自:http://blog.csdn.NET/hengshujiyi/article/details/21182813 补充:我出现这个错误是一个工程中有两个同名的文件,只要删除掉一个就好了,可 ...
- CentOS7 64位下 MySQL5.7的安装与配置(YUM)
趁着11.11的时候在阿里云上弄了一云服务ECS(作为自己的节日礼物 > _ <) ,系统为CentOS的,打算弄一个人博客之类的,这些天正在备案当中(不知得多久). 忙里偷闲,在中午休息 ...
- 云监控自定义HTTP状态码说明
您在使用站点监控时,返回的6XX状态码均为云监控自定义HTTP状态码,具体含义如下表所示: 状态码 含义 备注 610 HTTP连接超时 监测点探测您的网站时出现连接超 ...
- docker API 配置与使用
在网上看到一大堆乱乱七八招的博客,很多都不能用,我根据这些天踩的坑来总结一下吧 首先!怎么配置 docker API 两种方法 在/etc/sysconfig/docker文件里加一行OPTIONS= ...
- 发送post请求几种常见content-type类型
application/x-www-form-urlencoded 这应该是最常见的 POST 提交数据的方式了.浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 app ...
- MySQL必会
SQL语言对大小写不敏感,但一般使用大.1.创建数据库 CREATE DATABASE test; 2.授予权限 CRANT ALL ON test.* to user(s); 3.使用指定数据库 U ...
- git上下载的thinkphp框架报错解决方法
git上下载的thinkphp5框架使用.gitignore没上传依赖,需要通过composer进行下载依赖,使用composer install或者composer update即可解决.
- Hadoop(23)-Yarn资源调度器
Yarn是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而MapReduce等运算程序则相当于运行于操作系统之上的应用程序 1. Yarn工作机制 机制详解 第1 ...
- 怎么修复网站漏洞 骑士cms的漏洞修复方案
骑士CMS是国内公司开发的一套开源人才网站系统,使用PHP语言开发以及mysql数据库的架构,2019年1月份被某安全组织检测出漏洞,目前最新版本4.2存在高危网站漏洞,通杀SQL注入漏洞,利用该网站 ...