在Android平台下如何控制应用程序生命周期

发布时间:2021-11-11 16:15:17 作者:柒染
来源:亿速云 阅读:158

本篇文章为大家展示了在Android平台下如何控制应用程序生命周期,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

我们向很多朋友介绍过Android特有的虚拟机:Dalvik虚拟机工作原理介绍。Android各个应用在运行时的进程管理和内存管理都是相对独立的,Android应用程序并不能控制自己的生命周期。小编将介绍如何控制应用程序生命周期。

一、前言

与大多数传统的操作系统环境不同,Android应用程序并不能控制自己的生命周期。所以应用的各个组件(activity,Service……)就得时刻小心的监听应用的状态变化对它们的影响,防止在不适当的时机被终止掉。(可能会造成数据丢失哦)

在Android中每个应用都具有独立的进程运行在独立的Dalvik(Android特有的虚拟机)。各个应用在运行时的进程管理和内存管理都是相对独立的。Android使用一种“侵占性”的方式管理系统资源,这意味着为了释放资源给高优先级的程序(通常情况下是正在与用户进行直接交互的程序),某些进程及其宿主程序将会在没有任何提示警告的情况下被无情的结束。

二、理解应用的优先级和进程状态

结束一些进程是为了释放回收资源,那么那些进程会被结束?是A先结束还是B先结束呢?这决定于宿主应用程序的优先级了。一个应用的优先级等同于具有***优先级的组件的优先级。如果此刻两个程序具有相同的优先级,那么曾经哪个进程处于低优先级的时间较长,就会被结束掉。进程的优先级受到进程间附属关系的影响,比如A应用依赖的Service或者Content Provider是由B应用提供的,那么B将会具有更高的优先级。所有的Android应用都会遗留在内存中运行,直到系统需要释放回收资源才会被结束掉。

在Android平台下如何控制应用程序生命周期
图示:各种进程及其对应的优先级

Activity Process 活动进程是其宿主程序更用户直接交互的组件,Android会尝试通过回收各种资源来保证其运行状态。此类进程数量少,通常是***被结束掉的。

活动进程包含下面几种:

Activity处于激活状态,也就是说处于foreground,接收响应用户事件;

Activities, Services, or Broadcast Receivers 正在执行处理OnReceive 事件;

Services 正在执行处理 onStart, onCreate, or onDestroy 事件.

Visible Process 可视化,但是不处于活动状态的Activity。它们不处于foreground也不接受响应用户事件。这中情况发生在Activity有部分被覆盖了(比如我们点击A里面的一个按钮,弹出一个Dialog,此时A就变成一个可视进程)。可视进程同样很少,只有在极端的情况下,为了保证Activity Process的运行才会被结束掉。

Started Service Process 注意,是启动后的服务进程。服务进程需要在没有可视化界面的情况下持续运行,因为服务没有和用户直接交互。它们依然被认为是前台进程,只有当Visible和Activity Process需要资源的时候才会被结束。

Background Process 一个进程附属在不可视的Activity 也没有任何启动的服务进程就变成了后台进程。通常情况下Android里面会有一大堆后台进程,Android用 last-seen-first-killed 这种方式来结束此类进程,从而为foreground进程提供资源。

Empty Process 为了改善整个系统的性能,Android会在内存中保留已经结束生命周期的应用程序。Android保留这些缓存为了是应用能够快速启动。它们将会按照一贯的情况被结束掉。

综上所述,正确的组织应用程序,确保稳定运行,防止运行中途被终止是非常重要的。

上述内容就是在Android平台下如何控制应用程序生命周期,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. 在自己的App里面加入微博分享---Android平台
  2. iOS学习——iOS应用程序生命周期(四)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android

上一篇:怎么解决MySQL中InnoDB: Failing assertion: format != 0错误

下一篇:Django中的unittest应用是什么

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》