zoukankan      html  css  js  c++  java
  • 详解Android中的四大组件之一:Activity详解

    标题图

    Activity详解.png

    activity的生命周期

    Activity的生命周期.png

    activity的四种状态

    Activity的四种状态.png

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

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

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

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

    activity的生命周期

    activity的生命周期

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

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

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

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

    Android进程优先级

    Android进程优先级.png

    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

    Android的任务栈.png

    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 点赞

    送❤

  • 相关阅读:
    开源的Ajax.Net类库
    开放的即时通信协议Jabber
    代码生成工具之MyGeneration
    清华梦的粉碎—写给清华大学的退学申请(牛人 王垠 )
    [.NET网格计算框架] Alchemi
    .net安全类库
    使用Facility:EnterpriseLibrary整合进Castle
    castle project 发布新版本
    10招步骤保护IIS服务器安全
    应用IBatisNet+Castle进行项目的开发
  • 原文地址:https://www.cnblogs.com/dashucoding/p/9434499.html
Copyright © 2011-2022 走看看