activity的生命周期

activity的四种状态

running:正在运行,处于活动状态,用户可以点击屏幕,是将activity处于栈顶的状态。

paused:暂停,处于失去焦点的时候,处于paused,可能是被如弹框一样遮盖,被通明的activity的放置到栈顶,paused一起状态都存在。

stopped:处于stopped状态,是当前的activity被遮盖,是完全遮挡的那种,覆盖屏幕,一起的状态信息还是存在的。

killed:activity被销毁,回收,一切的状态信息不存在了。

activity的生命周期

activity启动 ->被创建时调用onCreate()->被启动,处于用户可见状态,但不能与用户交互onStart()->可与用户交互了onResume()

点击Home 整个activity处于停止状态,可见,不能与用户交互onPause()->整个activity被停止,被完全覆盖,onStop()

回到activity 处于由不可见状态到可见的状态onRestart()->onStart()-onResume()

退出activity onPause()->onStop()->当前activity被销毁,回收,资源释放onDestroy()

Android进程优先级

  1. 前台进程 -Activte process
  2. 可见进程-Visible Process
  3. 服务进程 - Service process
  4. 后台进程 Background process
  5. 空进程-Empty process

前台

前台process是与用户交互的控件的应用程序,处于“活动”状态的Activity

可见

可见进程为activity可见,不属于前台,但不能与用户交互的进程。

服务

已经启动的Service

后台

后台的进程中Activity是不可见的,后台进程中没有启动任何的Service,即为后台进程。

空进程,在资源需要的时候常常被杀掉。

Android的任务栈

App启动时,系统会创建一个任务栈,栈也被叫做Task。退出activity的时候,要清除任务栈,任务栈会保留每个activity的信息,所以要安全的保存任务栈。

任务栈不是唯一的,也可有一个activity可以独享一个任务栈。

正常模式下的栈是后进先出,在AndroidManifest.xml中启动,通过android:launchMode进行设置的,有四种模式standard、singleTop、singleTask、singleInstance

  1. standard:默认,每次启动重新创建。每创建一个activity,都会创建一个onCreate()->onStart()->onResume()。每一次都重新创建会消耗资源。

  2. singleTop:栈顶复用模式,栈顶存在则不创建,如果不在栈顶就又要重新创建,检验的是栈顶是否存在,即使在第二个,不是栈顶,activity也要被重新创建。

  3. singleTask:检测整个任务栈,是否存在activity,如果存在就存放在栈顶,1)启动singleTaskActivity,会将该Activity置于栈顶,它上面的所有activity都会被销毁。2)其他AppsingleTask模式启动该Activity时,会创建一个新的任务栈,如果启动模式为singleTaskActivity已经在一个任务栈中,那么启动后,后台的这个任务栈将一起切换至前台。

  4. singleinstance:activity在整个系统当中有且只有一个实例,在任务栈只有一个activity,即是singleinstance

scheme跳转协议

scheme跳转协议为一种页面内跳转协议,跳转页面,根据H5页面跳转,跳转app等。

结语

  • 本文主要讲解 详解Android中的四大组件之一:Activity详解
  • 下面我将继续对JavaAndroid中的其他知识 深入讲解 ,有兴趣可以继续关注

  • 小礼物走一走 or 点赞

详解Android中的四大组件之一:Activity详解的更多相关文章

  1. 【Android】安卓四大组件之Activity(二)

    [Android]安卓四大组件之Activity(二) 前言 在这篇文章之前,我已经写过了一篇有关Activity的内容,是关于activity之间的页面跳转和数据传递,而这篇文章着重强调的是Acti ...

  2. 【Android】安卓四大组件之Activity(一)

    [Android]安卓四大组件之Activity(一) 前言 Activity是Android学习中的一个重要组件,想要对其进行系统的了解可以分为几块内容,这一大章节的内容是有关于activity之间 ...

  3. 关于Android中的四大组件(Service的开启与关闭)

    前言 服务(Service)是Android系统中的四大组件之中的一个.服务主要用于两个目的:后台执行和跨进程訪问. 通过启动 一个服务.能够在不显示界面的前提下在后台执行指定的任务,这样能够不影响用 ...

  4. Android四大组件之Activity详解

    一.Activity的概要说明 我看过Activity的源码,Activity类注释大概是这样解释的:几乎所有的Activity都是与用户交互用的,我想用了一个几乎的意思应该是排除一些纯展示界面吧,因 ...

  5. Android四大组件之Activity详解——传值和获取结果

    废话不多说,先来看效果图 项目源码: http://download.csdn.net/detail/ginodung/8331535 程序说明: 在MainActivity中输入用户名和密码,然后提 ...

  6. Android四大组件之Activity详解——创建和启动Activity

    前面我们已经对Activity有过简单的介绍: Android开发——初始Activity Android开发——响应用户事件 Android开发——Activity生命周期 先来看一下最终结果 项目 ...

  7. Android中Broadcast Receiver组件具体解释

    BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播 ...

  8. 【Android中Broadcast Receiver组件具体解释 】

    BroadcastReceiver(广播接收器)是Android中的四大组件之中的一个. 以下是Android Doc中关于BroadcastReceiver的概述: ①广播接收器是一个专注于接收广播 ...

  9. Android四大组件之——Activity的生命周期(图文详解)

        转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai       联系方式:JohnTsai.Work@gmail.com       [Andro ...

随机推荐

  1. layer.js 注册登录切换的问题

    layer.js 是一个很好用的弹窗框架,使用的时候很方便,但是今天遇到一个问题,让我很头疼啊,一直都做不出来,就是登录和注册弹窗的切换问题 这里涉及到两个页面:guide.html 即父页面,den ...

  2. js中json的使用

  3. ubuntu环境下,ubuntu16.04装机到nvdia显卡驱动安装、cuda8安装、cudnn安装

    首先是安装ubuntu16.04 A.制作u盘启动盘(提前准备好.ios文件): 1.安装u盘制作工具unetbootinsudo apt-get install unetbootin2.格式化u盘s ...

  4. jenkins+sonarQube代码质量扫描 并排除指定的目录

    sonar.projectKey=dev1-news-paymentsonar.projectName=dev1-news-paymentsonar.projectVersion=$BUILD_NUM ...

  5. Python+Selenium学习--自动生成HTML测试报告

    前言 在脚本运行完成之后,除了在log.txt 文件看到运行日志外,我们更希望能生一张漂亮的测试报告来展示用例执行的结果.        HTMLTestRunner 是Python 标准库的unit ...

  6. PC滚动条样式

    #jmwin2为外部容器             #jmwin2{   width: 90%;   height: 65%;   background: white;   position: abso ...

  7. 转:centos查看实时网络带宽占用情况方法

    Linux中查看网卡流量工具有iptraf.iftop以及nethogs等,iftop可以用来监控网卡的实时流量(可以指定网段).反向解析IP.显示端口信息等. centos安装iftop的命令如下: ...

  8. 199. Binary Tree Right Side View 从右侧看的节点数

    [抄题]: Given a binary tree, imagine yourself standing on the right side of it, return the values of t ...

  9. Python项目--Scrapy框架(二)

    本文主要是利用scrapy框架爬取果壳问答中热门问答, 精彩问答的相关信息 环境 win8, python3.7, pycharm 正文 1. 创建scrapy项目文件 在cmd命令行中任意目录下执行 ...

  10. Jmeter创建一个web测试计划

    1.  下载Jmeter 下载地址:http://jmeter.apache.org/download_jmeter.cgi 下载后解压到你想“安装”的路径下,比如: D:\Program Files ...