`
80demon
  • 浏览: 77834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Android开发中进程等级相关

 
阅读更多

  Android五个进程等级

  1、前台进程(Foreground process):
  用户当前工作所需要的。一个进程如果满足下列任何条件被认为是前台进程:

  正运行着一个正在与用户交互的活动(Activity对象的onResume()方法已经被调用)。
  寄宿了一个服务,该服务与一个与用户交互的活动绑定。
  有一个Service对象执行它的生命周期回调(onCreate()、onStart()、onDestroy())。
  有一个BroadcastReceiver对象执行他的onReceive()方法。

  在给定时间内仅有少数的前台进程存在。仅作为最后采取的措施他们才会被杀掉——如果内存太低以至于他们不能继续运行。

  2、可视进程(Visible process):
  没有任何前台组件,但是仍然能影响用户在屏幕上看到东西。一个进程满足下面任何一个条件都被认为是可视的:

  寄宿着一个不是前台的活动,但是它对用户仍可见(它的onPause()方法已经被调用)。举例来说,这可能发生在,如果一个前台活动在一个对话框(其他进程的)运行之后仍然是可视的,比如输入法的弹出时。
  寄宿着一个服务,该服务绑定到一个可视的活动。

  一个可视进程被认为是及其重要的且不会被杀死,除非为了保持前台进程运行。

  3、服务进程(Service process):是一个运行着一个用startService()方法启动的服务,并且该服务并没有落入上面2种分类。虽然服务进程没有直接关系到任何用户可见的,它们通常做用户关心的事(诸如在后台播放mp3或者从网络上下载数据),因此系统保持它们运行,除非没有足够内存来保证所有的前台进程和可视进程。

  4、后台进程(Background process):是一个保持着一个当前对用户不可视的活动(已经调用Activity对象的onStop()方法)(如果还有除了UI线程外其他线程在运行话,不受影响)。这些进程没有直接影响用户体验,并且可以在任何时候被杀以收回内存用于一个前台、可视、服务进程。一般地有很多后台进程运行着,因此它们保持在一个LRU(least recently used,即最近最少使用,如果您学过操作系统的话会觉得它很熟悉,跟内存的页面置换算法LRU一样。)列表以确保最近使用最多的活动的进程最后被杀。

  5、空进程(Empty process):是一个没有保持活跃的应用程序组件的进程。保持这个进程可用的唯一原因是作为一个cache以提高下次启动组件的速度。系统进程杀死这些进程,以在进程cache和潜在的内核cache之间平衡整个系统资源。

  一个进程的排名因为其他进程依赖它而上升。一个进程服务其它进程,它的排名从不会比它服务的进程低。例如,进程A中的一个内容提供者服务进程B中的一个客户,或者进程A中的一个服务绑定到进程B中的一个组件,进程A总是被认为比进程B重要。

  因为一个服务进程排名比后台活动的进程排名高,一个活动启动一个服务来初始化一个长时间运行操作,而不是简单地衍生一个线程——特别是如果操作很可能会拖垮活动(例如出现ANR)。这方面的例子是在后台播放音乐和上传相机拍摄的图片到一个网站。使用服务保证操作至少有“服务进程”的优先级,无论活动发生什么情况。

分享到:
评论

相关推荐

    Android-提高android服务进程的优先级

    本文将详细介绍如何在Android中提升服务进程的优先级,并探讨相关的知识点。 首先,理解Android进程的生命周期和优先级至关重要。Android系统根据各个应用组件所处的进程的重要性,将其分为多个等级,包括前台进程...

    阿里巴巴Android开发手册

    图像处理和动画设计是Android开发中不可或缺的部分。手册指导开发者如何有效管理内存消耗,避免因Bitmap过大导致的OOM,以及如何创建流畅的动画效果。 **八、安全** 安全章节涉及敏感信息保护、网络通信安全、权限...

    android源码游戏源代码跳动的心

    Android提供了SharedPreferences和FileInputStream/OutputStream等工具,可以用来保存玩家的分数、等级等信息,或序列化游戏状态。 七、游戏逻辑 "跳动的心"游戏的源码必然包含了游戏的逻辑规则,如得分系统、关卡...

    Android中Log相关流程介绍

    `logcat`是Android开发中常用的工具,用于查看和管理应用程序的日志输出。通过`adb logcat`命令,开发者可以在终端窗口中实时查看设备上的日志信息。`logcat`支持多种筛选方式,如按日志级别、日志标签或进程ID进行...

    Android 5.0系统以上获取运行进程demo

    在Android系统中,管理和了解设备上正在运行的进程是开发者们常常需要面对的任务。然而,随着系统的更新,一些API的使用方式也会发生变化,以更好地保护用户隐私和提高系统的安全性。在Android 5.0(API级别21)及...

    基于android模拟考试系统源代码.zip

    这涉及到字符串处理和文件操作的相关知识,是Android开发中的基础技能。 事件处理是用户界面交互的关键。在系统中,每个题目都有相应的选择按钮,用户点击后,系统需要捕获这些事件并作出响应。这涉及到Android的...

    获取手机正在运行的app,以及当前前台正在运行的app(兼容android6.0)

    在Android系统中,获取正在运行的应用程序及其状态是开发者经常需要进行的操作,特别是在开发系统监控、性能分析或者个性化定制应用时。本主题将详细讲解如何在Android 6.0及更高版本中获取手机上正在运行的APP,...

    android应用程序开发流程要点借鉴.pdf

    在Android开发中,所有的应用程序都基于类和对象。 - **基本语法**:Java与C语言相比,在语法上有显著差异,如数据类型的定义、代码组织方式等。例如,Java的主程序入口是`main`方法,而C语言是`main`函数。 - **...

    android开发笔记

    ### Android开发笔记知识点详解 #### 第1章 Android简介 ...以上总结了Android开发笔记中的核心知识点,涵盖了从基础概念到具体实践的多个方面。这些内容对于初学者理解和掌握Android开发非常有帮助。

    android考试复习资料

    Android 系统中的进程优先级从高到低分为多个等级,这决定了应用的执行效率和资源分配。在 Android 应用中,主要的四大组件是 Activity、Service、BroadcastReceiver 和 ContentProvider。 Activity 是应用程序的...

    详解C#开发Android应用程序的流程

    本文将详细解析如何使用C#开发Android应用程序的流程,这对于那些习惯于.NET框架和C#编程的开发者来说是一大福音,因为他们无需完全转向Java,也能参与到Android应用的开发中。 首先,我们要明白,C#确实可以用于...

    Android_Handle_Thread

    在 Android 开发中,多线程的应用至关重要,特别是在处理耗时操作时,以避免阻塞主线程,保证用户体验。本文将深入探讨 Android 线程的管理以及如何在多线程环境中更新 UI。 首先,让我们了解 Android 的进程模型。...

    074集-进程的优先级

    在Android系统中,进程优先级通常分为以下几个等级: 1. **前台进程(Foreground Process)**:这类进程包含正在与用户交互的Activity或Service。它们对用户体验至关重要,因此系统尽可能不会杀死这些进程,即使...

    Android移动开发技术(慕课版)习题集题库及答案.docx

    1. **SDK组件的作用**:SDK(Software Development Kit)组件在Android开发环境中扮演着关键角色,主要用于**开发**Android应用。它包含了开发Android应用所需的各种工具和文档,比如APIs、库文件等。 2. **Dalvik...

    Android系统总结+精通android

    本篇将基于“Android系统总结+精通android”这一主题,全面探讨Android系统的关键知识点,帮助你成为一名Android开发高手。 1. **Android系统架构** - **Linux内核**:Android的基础是Linux内核,提供了硬件抽象层...

    Android清单权限中文详细说明.pdf

    在Android应用开发过程中,权限管理是非常重要的一环。合理的权限设置不仅可以保障应用的安全性,还可以提升用户体验。本文档详细介绍了部分Android清单文件中的权限项及其功能作用,帮助开发者更好地理解和使用这些...

    Android中获取正在运行的应用程序ActivityManager的使用(二)

    本篇文章将深入探讨如何利用ActivityManager来获取正在运行的应用程序信息,这是Android开发中的一个重要知识点,对于理解和优化应用行为有着至关重要的作用。 首先,我们需要理解ActivityManager的核心职责。它...

    Android提高Service优先级的方法分析

    因此,了解如何提高Service的优先级是Android开发中的一个重要知识点。 Service的优先级分为前台(foreground)和后台(background)。默认情况下,Service被创建时处于后台状态,其优先级较低。当Service处于后台...

    安卓Android源码——PixelTowers.zip

    《安卓Android源码解析——以PixelTowers为例》 在移动开发领域,Android操作系统占据了重要的地位,其开源的特性使得开发者能够...这对于提升我们的Android开发技能,尤其是对大型项目的设计和优化,具有极大的帮助。

Global site tag (gtag.js) - Google Analytics