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小结的更多相关文章

  1. Android中Activity启动过程探究

    首先追溯到Activity的启动,随便启动一个自己写的demo项目,使用DDMS进行debug标记,然后在Debug中把主线程暂停,可以看到调用栈.如下图所示: 于是我们先看android.app.A ...

  2. Android Camera 使用小结。两种方法:一是调用系统camera app,二是自己写camera程序。

    源文链接:http://www.cnblogs.com/franksunny/archive/2011/11/17/2252926.html Android Camera 使用小结 Android手机 ...

  3. Android之Activity启动流程详解(基于api28)

    前言 Activity作为Android四大组件之一,他的启动绝对没有那么简单.这里涉及到了系统服务进程,启动过程细节很多,这里我只展示主体流程.activity的启动流程随着版本的更替,代码细节一直 ...

  4. Android中Activity的启动模式

    简介 Android中的活动启动方式分为4种:standard, singleTop, singleTask, singleInstance.可以在AndroidManifest.xml中通过给< ...

  5. Android之Activity的生命周期

    PS:写一发关于Activity的生命周期,也算是面试的重点内容. 学习内容: 1.Activity的生命周期 2.面对多种情况的时候Activity的生命周期 3.onSaveInstanceSta ...

  6. android开发------Activity生命周期

    这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...

  7. Android课程---Activity中保存和恢复用户状态

    onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chens ...

  8. Android课程---Activity 的生命周期

    activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context 3.android.app.Applicat ...

  9. Android课程---Activity的创建

    一.为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能.新的Activity的最基本的框架代码如下所示: package com.paad.myapplication; ...

随机推荐

  1. 理解Storm可靠性消息

    看过一些别人写的, 感觉有些东西没太说清楚,个人主要以源代码跟踪,参考个人理解讲述,有错误请指正. 1基本名词 1.1 Tuple: 消息传递的基本单位.很多文章中介绍都是这么说的, 个人觉得应该更详 ...

  2. nodejs如果npm install express -g远程安装费时

     npm install -g cnpm --registry= https://registry.npm.taobao.org

  3. c语言描述的快速排序法

    #include<stdio.h> #include<stdlib.h> void QuikSort(int a[],int m,int n){ //第一个数作为关键字,比他大 ...

  4. Kali 配置ssh服务器

    SSH服务器配置 ssh是大多数Linux大佬必备的一样东西.Linux在工作中通常是命令行界面为主,那么就必定会使用ssh进行远程登录.下面我们介绍ssh配置和使用. 操作系统:kali-linux ...

  5. canvas 制作表情包

    canvas 制作表情包 代码如下. <!DOCTYPE html> <html> <head> <title>表情制作</title> & ...

  6. alias,unalias命令

    alias unalias 命令 =================================================[root@sambo ~]# aliasalias cp='cp ...

  7. 配置Github秘钥

    Git安装完成后,需要手动配置ssh密钥 配置github的ssh密钥: (1)打开Git Bash查看电脑上是否已经存在SSH密钥: 输入 cd ~/.ssh 若如上图显示无法找到该文件则要创建新的 ...

  8. 总结laravel假数据填充步骤

    定义好模型 xxx.php 定义好数据生成的规则 database/factories/XxxlFactory.php 写入生成数据的代码,控制好生成的数据数目,对生成后的数据做出修改 databas ...

  9. 修复网站漏洞对phpmyadmin防止被入侵提权的解决办法

    phpmyadmin是很多网站用来管理数据库的一个系统,尤其是mysql数据库管理的较多一些,最近phpmysql爆出漏洞,尤其是弱口令,sql注入漏洞,都会导致mysql的数据账号密码被泄露,那么如 ...

  10. python2.7入门---Number(数字)

        今天咱们来简单分享一下关于python中的一种数据类型和操作方法.费话不多说哈,咱们直接来进行实践加理论.首先,我们要知道,Python Number 数据类型用于存储数.数据类型是不允许改变 ...