专栏首页达达前端详解Android中的四大组件之一:Activity详解

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 电商项目(下)

    感谢你学习今天的内容,如果你觉得这篇文章对你有帮助的话,也欢迎把它分享给更多的朋友,感谢。

    达达前端
  • wepy项目的学习

    首页,搜索商品,消息(我的消息),轮播图,签到,换货,特价专区,我要补货,优惠活动,

    达达前端
  • Day5:html和css

    如何实现盒子居中问题,要让盒子实现水平居中,要满足是快级元素,而且盒子的宽度要定义。然后数值为auto即可。

    达达前端
  • Android 中Fragment与Activity通讯的详解

    尽管fragment的实现是独立于activity的,可以被用于多个activity,但是每个activity所包含的是同一个fragment的不同的实例。 ...

    砸漏
  • android开发之关闭所有的activity的方法

    当app中打开了多个activity的时候,由于进入的比较深,所以,很多app不得不让用户一步一步退回到第一个界面(MainActivity),在一步一步退回的...

    砸漏
  • 提示[译] Android 生命周期备忘录 —— 第四部分:ViewModel、半透明 Activity 及启动模式

    ViewModel 的生命周期非常简单:它只有 onCleared 这一个回调。但是,这个函数的作用域在 activity 和 fragment 中是有区别的:

    Android 开发者
  • Android四大组件完全解析(一)---Activity

    本文参考\android\android\frameworks\base\core\java\android\app\Activity.java文件中的类注释,...

    fanfan
  • 再看Android官方文档之Activity&Intent

    子勰
  • 安卓开发之Activity传递参数

    1、知识点:启动activity、注册activity、button绑定监听事件、传递参数、获取参数 2、传递参数以及绑定监听代码(注意如果绑定监听出现错误:需...

    苦咖啡
  • Appium+python自动化27-android特有的wait_activity

    前言 在启动app的时候,如果直接做下一步点击操作,经常会报错,于是我们会在启动完成的时候加sleep。 那么问题来了,这个sleep时间到底设置多少合适呢?设...

    上海-悠悠

扫码关注云+社区

领取腾讯云代金券