进程理解

Android系统最小的控制单元是:进程 process

应用/CPU最小的控制单元是:线程 thread

一个应用一个 process 进程

一个应用一个 package(包是唯一的)

一个应用一个 dalvik vm(一个应用一个dalvik vm,这样才能保证数据的安全性)

一个应用一个 user(一个应用一个用户,因为Linux把每一个进程看作一个用户,进程与进程之间 权限验证很严格)


在Android4.4之前,每一个进程是 dalvik vm 模式,这种方式长时间运行会导致性能低

ART 模式:Android 5.0后,这种模式之后,以后的安卓就是苹果的性能


进程的优先级别

当Android系统内存空间不足的时候,系统会自动杀进程,怎么杀进程呢,就是按照进程的优先级别来杀的,优先级别 最低的 最先杀

1.前台进程:

      1.1 可以看到的/可以操作的/属于前台进程

      1.2 A应用 去绑定 B应用的服务,然后B应用是回到桌面状态的,B应用也属性前台进程

      1.3 只要是Service在执行生命周期方法的时候,也属于前台进程

      1.4 只要是BroadcastReceiver-->onReceiver()生命周期方法的时候,也属于前台进程

2.可视进程:

      2.1 当A应用 被 B应用挡住来一部分, A应用可以看到,却不能操作,A应用属于可视进程

      2.2 当A应用 被 B应用挡住来一部分, A应用可以看到,却不能操作,同时A应用绑定了S应用的Service,那么S应用和A应用都属于可视进程

3.服务进程:

      3.1 当C应用启动了一个Service,C应用回到桌面,C应用属于服务进程

4.后台进程:

      4.1 当D应用的任务栈还有Activity应用,D应用回到桌面,D应用属于后台进程(直接按了Home键盘)

5.空进程:

      5.1 当F应用的任务栈被弹栈弹完了,没有一个任务栈了,F应用属于空进程(不停的按Back键) 

后台进程演示:

空进程演示:

 


进程的提升

进程的提升:例如:在之前的的博客,Android-bindService本地服务-音乐播放(后台播放)-下,介绍了,如何把服务进程提升为前台进程

为什么要把服务进程提升为前台进程?

答:因为把服务进程提升为前台进程,是最稳定的(例如:一些山寨应用播放器,播放过程中,系统内存不足,应用突然被系统回收了,如果提升为前台进程,就不会被回收了)

Service:

// id=通知到唯一标示  notification=通知
startForeground(1, builder1.getNotification());

Activity:

// 既然是后台播放,就是要把当前Activity切换到后台
moveTaskToBack(true);

假设 当系统内存不足的时候,都是后台进程,系统会怎么杀

Android-进程理解/进程的优先级别的更多相关文章

  1. Android应用程序进程启动过程的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...

  2. Android中通过进程注入技术改动广播接收器的优先级

    前言 这个周末又没有吊事,在家研究了怎样通过进程的注入技术改动广播接收器的优先级.关于这个应用场景是非常多的.并且也非常重要.所以就非常急的去fixed了. Android中的四大组件中有一个广播:B ...

  3. 图文详解 Android Binder跨进程通信机制 原理

    图文详解 Android Binder跨进程通信机制 原理 目录 目录 1. Binder到底是什么? 中文即 粘合剂,意思为粘合了两个不同的进程 网上有很多对Binder的定义,但都说不清楚:Bin ...

  4. C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 VC中进程与进程之间共享内存 .net环境下跨进程、高频率读写数据 使用C#开发Android应用之WebApp 分布式事务之消息补偿解决方案

    C# .Net 多进程同步 通信 共享内存 内存映射文件 Memory Mapped 转 节点通信存在两种模型:共享内存(Shared memory)和消息传递(Messages passing). ...

  5. Android中通过进程注入技术修改广播接收器的优先级

    前言 这个周末又没有吊事,在家研究了如何通过进程的注入技术修改广播接收器的优先级,关于这个应用场景是很多的,而且也很重要,所以就很急的去fixed了. Android中的四大组件中有一个广播:Broa ...

  6. Android 组件和进程的一些关系

    1.Service 如果没有单独指定线程的话,那么和主activity是在同一个线程的,就是主线程,那么也不能够在这个service中做耗时操作,否则一定会中断退出. 2.默认情况下,一个Androi ...

  7. Android 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

  8. 保持Service不被Kill掉的方法--双Service守护 && Android实现双进程守护

    本文分为两个部分,第一部分为双Service守护,第二部分为双进程守护 第一部分: 一.Service简介:Java.lang.Object ↳Android.content.Context  ↳an ...

  9. Android应用程序进程启动过程(后篇)

    前言 在前篇中我们讲到了Android应用程序进程启动过程,这一篇我们来讲遗留的知识点:在应用程序进程创建过程中会启动Binder线程池以及在应用程序进程启动后会创建消息循环. 1.Binder线程池 ...

随机推荐

  1. RelativeLayout相对布局 各个属性详解

    RelativeLayout相对布局 相对布局 RelativeLayout 允许子元素指定它们相对于其父元素或兄弟元素的位置,这是实际布局中最常用的布局方式之一.它灵活性大很多,当然属性也多,操作难 ...

  2. C语言的第一次实验报告

    一.实验题目,设计思路,实现方法 第四次 分支+循环 加强版 (4.2.7 装睡) 设计思路:由题意可知通过最初输入量判断循环次数,根据输出形式可知在每次循环中需重新定义输入量并判断其是否满足题中条件 ...

  3. pyspark连接mysql

    from pyspark import SparkContext from pyspark.sql import SQLContext if __name__=="__main__" ...

  4. Python基础之爬虫(持续更新中)

    python通过urllib.request.urlopen("https://www.baidu.com")访问网页 实战,去网站上下载一只猫的图片 import urllib. ...

  5. mysql5.6.23安装 步骤

    1. 准备好配置文件 my.cnf 2.建立my.cnf中用到的必要的目录 3.在mysql目录下有个scripts/mysql_install_db, 执行: scripts/mysql_insta ...

  6. Appium简介及原理

    1.Appium简介 Appium是一个开源.跨平台的,适用于原生或混合移动应用(hybrid mobile apps)的自动化测试平台.Appium使用WebDriver(JSON wire pro ...

  7. babun编译安装git(2.12.0)遇到的问题及解决办法

    1. 下载git wget https://www.kernel.org/pub/software/scm/git/git-2.12.0.tar.xz 你或许需要加上选项: --no-check-ce ...

  8. 检测Python程序的执行效率

    无意中被问到代码执行效率的问题,那就总结一下检测代码执行效率的几种方式: 一.装饰器 在函数上加装饰器,来得到函数的执行时间. def cst_time(func, *args, **kwargs): ...

  9. leetcode507

    public class Solution { public bool CheckPerfectNumber(int num) { ) { return false; } ; ; i <= nu ...

  10. oracle创建新数据库

    oracle创建新数据库 look here http://www.cnblogs.com/phoenixzq/p/3510854.html windows start menu>Oracle& ...