Android 应用程序的生命周期

TESSY创建单元测试或集成测试工程 我们以tessy5.1为例,给大家展示单元测试和集成测试工程的创建过程。 阅读详情
Android 应用程序的生命周期

  在众人的猜测和期盼中,Google 终于发布了 Android SDK,为 “GPhone” 这个曾经充满争议的新名词下了一个官方定义。Google 并没有转行做硬件,我们可能还要等一年左右的时间才能触摸到真正的 “GPhone”。但是作为开发人员,有了 SDK 和 emulator 我们就可以提前开始 “GPhone 之旅”了。

  我看了一些 Android SDK 的文档和视频,在模拟世界中使用了一把 GPhone —— 其实就是在电脑上运行了一下 Android 的 emulator。在激动之余,我也对 Android 有了些许认识。睡觉前花了一些时间整理出来和大家分享,也请大家指正。

  Android 是一构建在 Linux 之上的开源移动开发平台,在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的。当一个程序或其某些部分被请求时,它的进程就“出生”了;当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个 进程就“死亡”了。可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制。这和我们编写桌面应用程序时的思维有一些不同,一个桌面应用程序的进程也是在其他进程或用户请求时被创 建,但是往往是在程序自身收到关闭请求后执行一个特定的动作(比如从 main 函数中 return)而导致进程结束的。要想做好某种类型的程序或者某种平台下的程序的开发,最关键的就是要弄清楚这种类型的程序或整个平台下的程序的一般工作 模式并熟记在心。在 Android 中,程序的生命周期控制就是属于这个范畴——我的个人理解:)

  在 Android 系统中,当某个 activity(应用程序的一个“帧”)调用 startActivity(myIntent) 时,系统会在所有已经安装的程序中寻找其 intent filter 和 myIntent 最匹配的一个 activity,启动这个进程,并把这个 intent 通知给这个 activity。这就是一个程序的“生”。比如我们在 Home application 中选择 “Web browser”,系统会根据这个 intent 找到并启动 Web browser 程序,显示 Web browser 的一个 activity 供我们浏览网页(这个启动过程有点类似我们在在个人电脑上双击桌面上的一个图标,启动某个应用程序)。在 Android 中,所有的应用程序“生来就是平等的”,所以不光 Android 的核心程序甚至第三方程序也可以发出一个 intent 来启动另外一个程序中的一个 activity。Android 的这种设计非常有利于“程序部件”的重用。

  一个 Android 程序的进程是何时被系统结束的呢?通俗地说,一个即将被系统关闭的程序是系统在内存不足(low memory)时,根据“重要性层次”选出来的“牺牲品”。一个进程的重要性是根据其中运行的部件和部件的状态决定的。各种进程按照重要性从高到低排列如 下:

  1. 前台进程。这样的进程拥有一个在屏幕上显示并和用户交互的 activity 或者它的一个 IntentReciver 正在运行。这样的程序重要性最高,只有在系统内存非常低,万不得已时才会被结束。

  2. 可见进程。在屏幕上显示,但是不在前台的程序。比如一个前台进程以对话框的形式显示在该进程前面。这样的进程也很重要,它们只有在系统没有足够内存运行所有前台进程时,才会被结束。

  3. 服务进程。这样的进程在后台持续运行,比如后台音乐播放、后台数据上传下载等。这样的进程对用户来说一般很有用,所以只有当系统没有足够内存来维持所有的前台和可见进程时,才会被结束。

  4. 后台进程。这样的程序拥有一个用户不可见的 activity。这样的程序在系统内存不足时,按照 LRU 的顺序被结束。

  5. 空进程。这样的进程不包含任何活动的程序部件。系统可能随时关闭这类进程。

  从某种意义上讲,垃圾收集机制把程序员从“内存管理噩梦”中解放出来,而 Android 的进程生命周期管理机制把用户从“任务管理噩梦”中解放出来。我见过一些 Nokia S60 用户和 Windows Mobile 用户要么因为长期不关闭多余的应用程序而导致系统变慢,要么因为不时查看应用程序列表而影响使用体验。Android 使用 Java 作为应用程序 API,并且结合其独特的生命周期管理机制同时为开发者和使用者提供最大程度的便利。

  关于 Android 的程序生命周期管理,这里有个 非常生动形象的演示。

  更详细权威的资料参看 Android SDK。 
【YoloV8改进策略】上采样改进|EUCB,轻量高效的上采样模块|即插即用 YOLOv8作为当前最先进的实时目标检测与实例分割模型之一,其在速度与精度之间取得了出色的平衡。然而,在资源受限的边缘设备或对实时性要求极高的应用场景中,YOLOv8的计算开销,尤其是在特征金字塔网络(FPN)和路径聚合网络(PAN)中用于特征融合的上采样操作,仍然是一个瓶颈。YOLOv8的颈部(Neck)结构中广泛使用nn.Upsample进行上采样,该操作虽然简单,但缺乏对特征内容的感知能力,且后续通常需要标准卷积来修复因插值带来的伪影,这增加了不必要的计算负担。 阅读详情

相关推荐

Lucene学习总结之二:Lucene的总体架构

Lucene总的来说是: 一个高效的,可扩展的,全文检索库。 全部用Java实现,无须配置。 仅支持纯文本文件的索引(Indexing)和搜索(Search)。 不负责由其他格式的文件抽取纯文本文件,或从网络中抓取文件的过程。 在Lucene in action中,Lucene 的构架和过程如下图, 说明Lucene是有索引和搜索的两个过程,包

forfuture1978的专栏 1万+

Android进程与生命周期介绍

Android系统会尽可能长的延续一个应用程序进程,但在内存过低的时候,仍然会不可避免需要移除旧的进程。为决定保留或移除一个进程,Android将每个进程都放入一个“重要性层次”中,依据则是它其中运行着的组件及其状态。重要性最低的进程首先被消灭,然后是较低的,依此类推。重要性共分五层,依据重要性列表如下: 1. 前台进程 •是用户操作所必须的,任一时间下,仅有少数进程会处于前台,仅当...

dowhathowtodo 230

【技能---ubuntu20.04更换国内镜像源】

安装好ubuntu20.04后,在下载软件等安装包的时候,速度特别的慢,为此就想着更换一下镜像源,以此来增加下载的速度!!!下面是换源的具体流程!!!提示:以下是本篇文章正文内容,下面案例可供参考以上到这里就更换完软件源了,如有不足之处,请大家斧正!!!

fyc300的博客 1万+

android之进程和应用程序的生命周期

在大多数情况下,每个Android应用程序都在自己的Linux进程中运行。当需要运行某些代码时,将为应用程序创建此过程,并且该过程将一直运行,直到不再需要它为止,并且 系统需要回收其内存以供其他应用程序使用。 应用程序的生命周期不是由应用程序直接控制的 和大家想的不太一样,android的应用程序进程的生命周期并不是由它自己本身控制的。 它是由系统通过应用程序正在运行的程序中的...

weixin_43887839的博客 536

硬件工程师的蜗牛成长路

1、《模拟电路课程》R/L/C/继电器/光耦/二极管/三极管/MOS管磁珠/ESD/TVS/肖特基二极管/稳压二极管/保险丝/GDT/TSS/光耦/MOS/运放/BJT比较器/面板开关/按键开关/拨码开关/BUCK/LDO/电源防护器件LM5069单输出PLL/多路输出PLL/单端晶振/差分晶振/晶体(这方面不熟悉,待以后补充)1)速度传感器2)温度传感器3)倾斜角传感器4)火焰传感器5)红外传感器6)呼吸心跳采集chaunganqi1)数字隔离 电平转换芯片/磁隔离/专用隔离芯片。

caozhaokun的博客 1983

YOLOv10改进策略【模型轻量化】| 替换骨干网络为MoblieNetV2,含模型详解和完整配置步骤

本文记录的是。采用深度可分离卷积将标准卷积分解为深度卷积和1×1卷积。同时,引入来,避免非线性层导致的性能下降问题。本文将应用到YOLOv10中,借助其高效的结构和特性,在保持一定精度的前提下,显著降低YOLOv10的计算复杂度和内存占用。

Limiiiing的博客 533

Android 生命周期

Android生命周期相关知识

weixin_52610823的博客 3170

PD3.0详解 第十一章 策略层 电源协商(三)(sink端)

前面大师匈介绍了Source端的内容,今天再看一下sink端的内容。大师匈还是想把标准文件的状态机拿出来说一下。大师匈把一张图分成俩部分,大家凑合看一下,一张图实在看不清内容。 Sink 端电源协商状态机。基于sink端哦!!! 上图先!!! 上面俩张图就是整个SINK端口的状态机了。。。介绍一下这个流程: 1、收到hardreset或者刚上电的进入PE_SNK_Startup开始状态。 2、在PE_SNK_Startup阶段后进入PE_SNK_Discovery,并等待Vbus的到来。 3、当Vbus

大师匈的博客 4131

Android开发之生命周期(App、Activity)

应用程序(App)和活动(Activity)的生命周期是Android开发中的重要概念。了解这些生命周期方法可以帮助开发者更好地管理资源、优化性能并提高用户体验。通过合理地使用这些生命周期方法,开发者可以确保应用或活动在各种情况下都能够稳定、流畅地运行。在开发过程中,遵循这些生命周期方法是至关重要的,以确保应用的稳定性和性能。

不积跬步无以至千里,不积小流无以成江海。一个喜欢学习分享的程序员 2951

Label Studio 数据标注平台,大模型预训练与微调必备

摘要:LabelStudio是一款开源数据标注工具,支持文本、图像等多种数据类型的标注。本文介绍了其安装方法(通过conda创建环境并pip安装)、基础使用流程(创建项目、导入数据、设置标签、标注导出)以及AI自动标注功能的实现。重点讲解了如何通过MLBackend集成LangChain模型实现自动标注:创建自定义模型类、构建预测链、处理返回结果,最后配置到LabelStudio项目中。该功能可显著提升标注效率,标注人员只需在AI预测结果基础上进行修正。

技术引领业务创新 290

超级详细的GNS3最新版3-2.2.50安装配置教程,网工速度收藏!

你好,这里是网络技术联盟站,我是瑞哥。上周给大家分享了GNS3安装包。周末的时候有小伙伴在安装的时候遇到了一些问题,瑞哥周末特地从头安装了一下GNS3,今天给大家出个安装的教程,每一步的步骤我都截图了下来,希望对大家有所帮助!

网络技术联盟站 1109

android应用程序的生命周期,Android应用程序的生命周期.doc

Android应用程序的生命周期.docAndroid应用程序的生命周期描述:程序的生命周期是在Android系统中进程从启动到终止的所有阶段,也就是Android从启动到停止的全过程。==程序的生命周期是由Android系统进行调度和控制的。①?程序生命周期a) Android进程的优先级。==》可见进程?==》服务进程==》后台进程==》空进程说明:㈠前台进程:Android系统中最重要的进程...

weixin_33066433的博客 502

使用MATLAB中的Simulink工具来构建一个微电网系统的仿真平台

微电网是指由分布式电源(如太阳能、风能等)、储能装置、负载以及控制和保护装置组成的局部电力系统。它可以独立于主电网运行,也可以与主电网并联运行。本示例将以一个简单的微电网为例,展示如何利用Simulink进行微电网接入与孤岛运行策略的设计与仿真。分布式电源:模拟太阳能光伏板或风力发电机等分布式电源。储能装置:用于存储多余能量或补充不足能量。负载:模拟实际用电需求。双向变流器:实现直流与交流之间的转换,并支持并网和孤岛模式切换。控制器:负责管理微电网的运行模式,包括并网控制和孤岛控制。

xiaoheshang_123的博客 348

Android应用程序的生命周期

 在对一个简单的Hello World工程进行项目结构剖析后,我们接着来学习下一个Android应用程序的生命周期是怎么样的,以便为后面的开发有个垫下良好的基石~       所谓的应用程序生命周期无非就是应用程序进程从创建到消亡的整个过程。但是,之所有将这一点拎出来单独的讲,当然有其特殊性。的确,Android应用程序的生命周期的终结这个动作并非由应用程序进程本身执行,而是取决于Android...

weixin_33924220的博客 1302

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Android应用程序生命周期

Android应用程序的生命周期由系统根据用户需求、可用资源进行严格管理。尽管系统的最终的决定者,但它会遵从一些既定的和逻辑上的原则来确定是否可以加载、暂停或停止应用程序。如果用户正在操作一个Activity,系统将为该应用程序提供较高的优先级;相反,如果一个Activity不可见,并且系统必须关闭一个应用程序来释放资源,它会关闭优先级较低的应用程序。     Android在独立的进程

ルーキーの殇 986

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

android系统级应用程序,Android系列-应用程序的生命周期

android.jpg目录应用程序生存周期的管理优先级Priority=1, ForegroundPriority=2, VisiblePriority=3, ServicePriority=4, BackgroundPriority=5, Empty注意应用程序对象Content provider 生存周期Broadcast receiver 生存周期对进程生存周期的影响Service 生存周期...

weixin_39587029的博客 195

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

安卓自学应用程序生命周期法

如果你有相当好的编程经验的话,你对应用程序的生命周期这一概念应该熟悉。一个应用程序的生命周期,由一些应用程序由开始执行到终止的步骤组成。每一个应用程序,不管是哪一种语言所写,都有一定的生命周期。android手机开发应用程序也没有例外。本部分会仔细对比ASP应用程序和Android的应用程序的生命周期。标准ASP程序应用程序生命周期标准ASP应用程序的生命周期和一个Andro...

weixin_33835690的博客 87

Android 应用程序生命周期

1、安卓的应用程序 用户开机时,安卓会启动Home应用程序,并把它置于前台(前台应用程序通常会占据除状态栏以外的所有的屏幕空间)。 用户可以在打开一个应用程序的同时打开另外一个应用程序或打开同一程序的其他窗口,所有这些程序和窗口都被系统的活动管理器记录在应用程序栈中,用户通过按Back按钮返回栈中的上一个窗口。每个窗口都是通过一个Activity类来表示的,每个Ac...

weixin_30648963的博客 131

android中应用程序生命周期,Android应用程序生命周期中的活动和图标

面向大众的移动技术,第3部分为您的Android移动应用程序添加导航样式安德鲁·格洛弗2013年7月25日发布面向大众的移动技术请期待本系列的后续内容.请期待本系列的后续内容.近年来,移动应用程序发布和移动开发技术市场都在爆炸式增长. 本系列文章将向熟悉编程但对移动技术相对较新的开发人员介绍移动应用程序的开发. 首先使用Java™代码对本机应用程序进行编码,然后将该工具箱扩展为包括JVM语言,脚本...

weixin_42545503的博客 290

Android 4学习(5):概述 - Android应用程序的生命周期

参考:《Professional Android 4 Application Development》

jubincn的专栏 3300
下一篇: Android UI Layout 之 AbsoluteLayout
Android_G
博客等级 码龄19年 1粉丝 4原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值