1.前台进程 前台进程是Android中最重要的进程,在最后被销毁,是目前正在屏幕上显示的进程和一些系统进程,也就是和用户正在交互的进程. 2.可见进程 可见进程指部分程序界面能够被用户看见,却不在前台和用户交互的进程.例如,我们在一个界面上弹出一个对话框(该对话框是一个新的Activity),那么在对话框后面的原界面是可见的,但是并没有与用户进行交互,那么原界面就是可见进程. 3.服务进程 服务基础南横是通过startService()方法启动的进程,但是不属于前台进程和可见进程,例如,在后台…
1.前台进程:即当前正在前台运行的进程,说明用户当前正在与通过该进程与系统进行交互,所以该进程为最重要的进程,除非系统的内容已经到不堪重负的情况,否则系统是不会将改进程终止的.2.可见进程:一般还是显示在屏幕中,但是用户并没有直接与之进行交互,该进程对用户来说同样是非常重要的进程,除非为了保证前台进程的正常运行,否则Android系统一般是不会将该进程终止的.3.服务进程:便是拥有Service进程,该进程一般是在后台为用户服务的.一般情况下,Android系统是不会将其中断的,除非系统的内容以…
一.Binder机制概述 在Android开发中,很多时候我们需要用到进程间通信,所谓进程间通信,实现进程间通信的机制有很多种,比如说socket.pipe等,Android中进程间通信的方式主要有三种: 1.标准Linux Kernel IPC 接口: 2.标准D-BUS接口: 3.Binder接口. 其中,Binder机制是使用最且最被认可的,因为Binder机制有以下优点: 1.相对于其它IPC机制,Binder机制更加简洁和快速: 2.消耗的内存相对更少: 3.传统的IPC机制可能会增加…
整体流程大致如下:     1.init简介 init进程是Android系统中用户空间的第一个进程,作为第一个进程,它被赋予了很多极其重要的工作职责,比如创建zygote(孵化器)和属性服务等.init进程是由多个源文件共同组成的,这些文件位于源码目录system/core/init.本文将基于Android7.0源码来分析Init进程. 2.引入init进程 说到init进程,首先要提到Android系统启动流程的前几步: 1.启动电源以及系统启动 当电源按下时引导芯片代码开始从预定义的地方…
[译]Simpleperf分析之Android系统篇 译者按: Simpleperf是用于Native的CPU性能分析工具,主要用来分析代码执行耗时.本文是主文档的一部分,系统篇. 原文见aosp仓库:android_platform_profiling.md Simpleperf主文档见aosp仓库:Simpleperf 官网介绍:https://developer.android.com/ndk/guides/simpleperf 目录 Simpleperf分析之Android系统篇 目录…
[转]内存不足时Android 系统如何Kill进程 大家其实都或多或少知道,Android系统有自已的任务管理器,当系统内存不足时,系统需要KILL一些进程(应用),以回收一部分资源,来保证系统仍可以正常的运行,而不会崩溃,今天,就具体讲讲这个原理. 进程优先级(importance hierarchy) Android 系统尽量保持进程运行的更久,但是仍有时候,需要结束掉老的进程,回收内存来保证新的,或更重要的进程运行.要决定哪些进程运行,哪些被 KILL,系统会为每个运行的进程或者组件设置…
Android系统是Google公司基于Linux内核开发的开源手机操作系统.通过利用 Linux 内核的优势,Android 系统使用了大量操作系统服务,包括进程管理.内存管理.网络堆栈.驱动程序.安全性等相关的服务.所以从这个角度来看,Android系统的线程和进程概念是Linux系统线程.进程的映射. 下面是操作系统层面进程和线程的概念解释. 进程(Process),从操作系统核心角度来说,进程是应用程序的一个运行活动过程,是操作系统资源管理的实体.进程是操作系统分配和调度系统内存.CPU…
Android系统启动概述 Android系统开机流程基于Linux系统,总体可分为三个阶段: Boot Loader引导程序启动Linux内核启动Android系统启动,Launcher/app启动 启动流程如图1形象展示: 图1 Android开机启动一般性流程 图1只简单地描述了开机启动一般性流程,"正常开机"(注意,是正常模式,不是工厂模式.recovery模式)流程为: 1. 手机.TV等android设备上电或重启后,系统硬件进行相应的复位操作,然后CPU开始执行第一条指令…
转:https://blog.csdn.net/zhonglunshun/article/details/78615980 服务启动机制system/core/init/init.c文件main函数中parse_config_file(init.rc)读取并解析init.rc文件内容.将service信息放置到system/core/init/init_parser.cpp的service_list中system/core/init/init.c文件main函数继续执行restart_servi…
转载自: http://www.linuxidc.com/Linux/2011-11/47587.htm 一.利用Android API函数查看1.1 ActivityManager查看可用内存. ActivityManager.MemoryInfo outInfo = new ActivityManager.MemoryInfo(); am.getMemoryInfo(outInfo); outInfo.availMem即为可用空闲内存. 1.2.android.os.Debug查询PSS,V…
在编写Android应用程序时,我们一般将一些计算型的逻辑放在一个独立的进程来处理,这样主进程仍然可以流畅地响应界面事件,提高用户体验.Android系统为我们提供了一个Service类,我们可以实现一个以Service为基类的服务子类,在里面实现自己的计算型逻辑,然后在主进程通过startService函数来启动这个服务.在本文中,将详细分析主进程是如何通过startService函数来在新进程中启动自定义服务的. 在主进程调用startService函数时,会通过Binder进程间通信机制来…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6666491 在前面一篇文章Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析中,我们系统地介绍了Android系统匿名共享内存的实现原理,其中着重介绍了它是如何辅助内存管理系统来有效地管理内存的,在再前面一篇文章Android系统匿名共享内存Ashmem(Anonymous Share…
http://developer.android.com/guide/components/processes-and-threads.html#Processes Android 操作系统的内存回收机制https://www.ibm.com/developerworks/cn/opensource/os-cn-android-mmry-rcycl/index.html Android系统回收资源时进程被杀的优先级 - oracleot的专栏 - 博客频道 - CSDN.NEThttp://bl…
一.proc文件系统 传统意义上的文件系统是用于块设备上信息的存储,/proc这个目录是一个虚拟文件系统,它放置的数据都是在内存当中,所以这个目录本身不占用任何硬盘空间.主要包含如下系统信息: 内存管理 系统进程特征数据 文件系统 设备驱动程序 系统总线 电源管理 终端 系统控制参数 用户和应用程序可以通过proc得到系统的信息,并可以改变内核的某些参数.由于系统的信息,如进程,是动态改变的,所以用户或应用程序读取proc文件时,proc文件系统是动态从系统内核读出所需信息并提交的.下面列出的这…
No1: 操作系统层包括各种驱动程序:显示.Flash内存.照相机.音频.WiFi.键盘.蓝牙.Binder IPC.能源管理. 各种库和Android运行环境大多是用C和C++实现的. Android运行环境主要指虚拟机技术---Dalvik. Java VM是基于栈的虚拟机,而Dalvik是基于寄存器的虚拟机,后者最大的好处在于可以根据硬件实现更大的优化,这更适合移动设备的特点. No2: 进程的类型按重要程度排序包括以下几项:前台进程(Foreground).可见进程(Visible).服…
随着大家收货后会有很多乐粉晒内存,为啦方便大家,在网上搜集了一些相关Andriod管理的相关机制合理管理内存,整理下发个贴. 首先要知道Android系统是基于Linux 2.6内核开发的开源操作系统(linux是啥都不知道自己去百度吧),而linux系统的内存管理有其独特的动态存储管理机制.不过Android系统对Linux的内存管理机制进行了优化,Linux系统会在进程活动停止后就结束该进程,而Android把这些进程都保留在内存中,直到系统需要更多内存为止.这些保留在内存中的进程通常情况下…
本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 机缘巧合写下这篇博客,作为个人工作经验的总结,不足之处,随后补上. 安卓是基于Linux2.6内核的操开源作系统,安卓比Linux更智能在于:进程结束后,安卓会把程序(并非进程)保留在内存中,直到内存不够再释放. 在安卓看来,内存不能空着,留程序缓存在后台不会占用CPU-只保留运行状态,二次打开更加快速-不用再次打开界面资源:所以安卓的内存在于有效利用. 系统会设置一个阈值,当系统内存低于此值时,…
创建与修改android属性用Systemproperties.set(name, value),获取android属性用Systemproperties.get(name),需要注意的是android属性的名称是有一定的格式要求的: 如下:1.前缀必须用system\core\init\property_service.c中定义的前缀. 2. 进行系统属性设置的程序也必须有system或root权限, 如何将android程序的权限提升到system权限?方法是这样的: 1.在AndroidM…
编写者:李文栋P.S. OpenOffice粘贴过来后格式有些混乱. 1.2 如何分析ANR问题 引起ANR问题的根本原因,总的来说可以归纳为两类: 应用进程自身引起的,例如: 主线程阻塞.挂起.死循环 应用进程的其他线程的CPU占用率高,使得主线程无法抢占到CPU时间片 其他进程间接引起的,例如: 当前应用进程进行进程间通信请求其他进程,其他进程的操作长时间没有反馈 其他进程的CPU占用率高,使得当前应用进程无法抢占到CPU时间片 分析ANR问题时,以上述可能的几种原因为线索,通过分析各种日志…
1.背景                     写博客快两年了,写了100+的文章,最火的文章也是大家最关注的就是如何实现android系统截屏.其实我们google android_screen_shot就会找到很对办法,但那些都是很多年前的了,在android4.*版本后,android对于源码进行了更正,使得以前的方法都不能够使用.        感谢cjd6568358这名网友,我们一起讨论,最终由他实现了android系统截屏功能,为了让以后想要这个功能的coder可以少走一些弯路,…
 http://www.cnblogs.com/bastard/archive/2012/10/11/2720314.html Android System Property 一 System Property 代码中大量存在:SystemProperties.set()/SystemProperties.get():通过这两个接口可以对系统的属性进行读取/设置, 顾名思义系统属性,肯定对整个系统全局共享.通常程序的执行以进程为单位各自相互独立,如何实现全局共享呢? System Propert…
应用层(Application) Android 的应用层由运行在 Android 设备上的所有应用程序共同构成(系统预装程序以及第三方应用程序). 系统预装应用程序包含拨号软件.短信.联系人.邮件客户端.日历.地图以及浏览器等提供基础功能的应用程序构成.第三方应用程序则是基于 Android SDK(Android Software Development Kit)进行开发,并受到框架层 SDK 接口约束的应用程序.两者的区别在于,系统预装应用比第三方应用拥有更高的系统使用权限:系统预装应用可…
此刻,本人还是一个android菜鸟,刚刚开始起步学习android相关知识,想用blog记录自己学习的过程,一方面给他人提供帮助,另一方面给自己个复习的地方. 在一起学习Android之前,先跟大家分享几个非常有用的网站: 1)Android developer 2)Google code 3)StackOverFlow 4)Android developers need to know 网上学习的资源到处是,我们主要是要学会择优使用,充分使用,而且较好的资源都是英文的,所以也可以一起提高英文…
这里,我们不会为真实的硬件设备编写内核驱动程序.为了方便描述为Android系统编写内核驱动程序的过程,我们使用一个虚拟的硬件设备,这个设备只有一个4字节的寄存器,它可读可写.想起我们第一次学习程序语言时,都喜欢用“Hello, World”作为例子,这里,我们就把这个虚拟的设备命名为“hello”,而这个内核驱动程序也命名为hello驱动程序.其实,Android内核驱动程序和一般Linux内核驱动程序的编写方法是一样的,都是以Linux模块的形式实现的,具体可参考前面Android学习启动篇…
转载请注明原文地址:http://blog.csdn.net/milado_nju 1. Android上的调试技术 在Android系统上,开发人员能够使用两种不同的语言来开发应用程序,一种是Java语言,开发人员使用的是Android SDK来配置和编译这些代码,生成Java语言的class文件,也就是Java虚拟机执行的二进制代码.Android系统使用.dex文件将一系列的class文件压缩在一起.第二种是C/C++语言,使用Android NDK来配置和编译这些代码.这些代码经过NDK…
Android 从图中可以看出Android主要的组成部分,其中底层是Linux的内核,包括的主要就是文件.内存.系统资源等的管理,Google在这部分的工作主要就是电源管理和一部分驱动,并且整合上层扩展及公共组件.如果要研究这部分,那应该是学习Linux的好的方向.接着一个重要的组成部分是Dalvik,一个Java虚拟机,类似jvm的东西,它主要就是提供一个虚拟的运行环境以适应上层的Java字节码(这里是.dex文件),理论上来说在其他的系统平台上装Dalvik,如Mac.Windows, 就…
1. 制定smack规则 “Zygote”进程由init进程创建,它负责创建系统服务进程“systemserver”.“radio”进程和APP进程.其中“radio”进程的uid是1001,它能够实现打电话和发短信的功能,“systemserver”进程uid是1000,它负责创建系统服务组件,通讯录进程uid是10000,它能够访问通讯录数据库,uid大于等于10000的进程都属于Android应用程序进程. 为了实现对“radio”和通讯录进程的访问控制,本课题使用“libsmack”库中…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6664554 在上一文章Android系统匿名共享内存Ashmem(Anonymous Shared Memory)简要介绍和学习计划中, 我们简要介绍了Android系统的匿名共享内存机制,其中,简要提到了它具有辅助内存管理系统来有效地管理内存的特点,但是没有进一步去了解它是如何实 现的.在本文中,我们将通过分析Android系统的匿名共享内存…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6633311 在上一篇文章中,我 们分析了Android系统进程间通信机制Binder中的Server在启动过程使用Service Manager的addService接口把自己添加到Service Manager守护过程中接受管理.在这一篇文章中,我们将深入到Binder驱动程序源代码去分析Client是如何通过Service Manager的…
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6629298 在前面一篇文章浅谈Android系统进程间通信(IPC)机制Binder中的Server和Client获得Service Manager接口之路中, 介绍了在Android系统中Binder进程间通信机制中的Server角色是如何获得Service Manager远程接口的,即defaultServiceManager函数的实现.S…