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; ...
随机推荐
- 第12章 GPIO输出—使用固件库点亮LED
本章参考资料:<STM32F76xxx参考手册>.库帮助文档<STM32F779xx_User_Manual.chm>. 利用库建立好的工程模板,就可以方便地使用STM32 H ...
- JavaScript函数的方法
在一个对象中绑定函数,称为这个对象的方法. 在JavaScript中,对象的定义是: var xiaoming = { name:'小明'; birth:1990; }; 但是,如果我们给xiaomi ...
- JavaScript 基础(二)数组
字符串, JavaScript 字符串就是用'' 和""括起来的字符表示. 字符字面量, \n 换行, \t 制表, \b 退格, \r 回车, \f 进纸, \\ 斜杠,\' 单 ...
- Angularjs基础(五)
AngularJS Select(选项框) AngularJS 可是使用数组或对象创建一个下拉列表选项.使用ng-options创建选项框 在AngularJS 中我们可以使用ng-option指令来 ...
- VUE插件整理
转自:https://blog.csdn.net/miaozhenzhong/article/details/80138174 1.VsCode官方插件地址: https://marketplace. ...
- 数字三角形W
题目描述 Description 数字三角形 要求走到最后mod 100最大 输入描述 Input Description 第1行n,表示n行 第2到n+1行为每个的权值 输出描述 Output De ...
- oracle约束约束状态和设计习惯
oracle约束状态有几个项目,会让人迷惑,分别是: enable/disable--是否启用/禁用 validate/invalidate--确认/不确认 deferrable/not deferr ...
- 利用python和opencv批量去掉图片黑边
import os import cv2 import numpy as np from scipy.stats import mode import time import concurrent.f ...
- kali2.0 设置输入法 找了好久,亲测有效
kali2.0更新源启用中文输入法 查看版本信(Version): uname -r uname -r 工具(Tools): fcitx fcitx fcitx-table-wbpy 更新源:(Sou ...
- 百度地图API定位+显示位置
1. 先在需要嵌入地图的页面引入map.js <script src="http://api.map.baidu.com/api?v=2.0&ak=你的秘钥"> ...