Android的原理:关于应用自启动,占内存那些问题
安卓打开应用的原理
![安卓打开应用的原理](https://img.taocdn.com/s3/m/1874967282c4bb4cf7ec4afe04a1b0717ed5b34d.png)
安卓打开应用的原理1. 背景介绍在安卓操作系统中,用户可以通过点击应用图标来打开应用程序。
这个seemingly simple 的过程,实际上涉及到了一系列的技术细节和原理。
本文将深入探讨安卓打开应用的原理,帮助读者更好地理解应用程序的启动过程。
2. 安卓应用启动流程概述安卓应用的启动主要包含以下几个步骤:1.用户点击应用图标。
2.系统检索应用信息。
3.创建应用进程。
4.启动应用程序的主活动(MainActivity)。
下面将逐一详细解释每个步骤。
3. 用户点击应用图标当用户点击应用图标时,发生的实际操作是用户触摸设备屏幕上的应用图标,并抬起手指。
这个操作会被设备捕获,并触发相应的事件。
4. 系统检索应用信息一旦用户点击了应用图标,系统会根据应用图标的信息,检索应用的相关信息。
这些信息通常包括应用程序的包名、启动活动(Launcher Activity)的类名等。
5. 创建应用进程根据上一步取得的应用信息,系统会创建一个新的应用进程。
每个应用在安卓系统中都有自己的进程,这样可以确保应用之间相互独立,互不干扰。
6. 启动应用程序的主活动应用进程创建完成后,系统将启动应用程序的主活动(MainActivity)。
MainActivity 是应用的入口点,负责处理用户与应用之间的交互。
在启动 MainActivity 之前,系统会先执行一系列初始化操作,包括加载应用的资源、初始化应用的全局状态等。
这些操作都是为了确保应用能够正常运行。
7. 应用进程的生命周期安卓应用进程的生命周期可以分为以下几个阶段:•前台阶段(Foreground):应用进程当前正在与用户进行交互,例如用户正在浏览应用的界面或者正在与应用进行操作。
•可见后台(Visible Background):应用进程可以被用户看到,但没有直接的用户交互。
•后台阶段(Background):应用进程当前没有被用户看到,但仍然保持存活,以便能够被用户迅速唤醒。
Android系统内存机制详解
![Android系统内存机制详解](https://img.taocdn.com/s3/m/5f64466ef5335a8102d22056.png)
在玩电脑时,俺们非常注意系统可用的内存还剩多少MB,没事都喜欢用优化软件整理进程以获得当前最大的可用内存。
但在Android系统的手机和平板上,习惯地清理进程就没那么重要了。
很多Android或者平板用户都喜欢安装高级任务管理器或者ES任务管理器等软件,因为安装后,可以在桌面添加一个“一键结束所有进程”的插件。
没事点一点就可以就能让可用内存保持在较高的容量上面。
而Android设备厂商也抓住了广大用户渴望大内存的心理。
纷纷推出动辄2GB内存的新品(三星Galaxy S4甚至会配3GB内存,容量直逼笔记本)。
那么,Android设备真的需要如此之高的内存吗?有必要没事就结束所有进程吗?独特的进程管理机制想知道内存对Android系统的影响,首先我们必须了解其独特的进程管理策略。
Linux (Android源于linux)会在活动停止之后就自动结束该进程,而Android则会将你所有运行过的进程都保留在内存中,方便你下次运行可以快速调用,让你觉得很爽~~~。
直到系统需要更躲内存时才会结束其中某些进程以释放内存。
那么,Android系统是靠什么来判断不同类型进程的终止优先级呢?原来,Android系统会评估每一个进程的重要性并为其幅值以大小不一的“oom_adj”阀值,这个值越大,其终止优先级越高。
比如,“当内存小于300MB时,结束所有‘oom_adj’大于3的进程。
”Android系统通常会会给进程分六类,其中前台进程的“oom_adj”为0,意味着它永远不会被终止,而其它类型的进程是否会被终止,就取决于当前系统的剩余内存了。
需要值得注意的是,前台进程和后台进程是可以相互转换的。
比如,你正在用chrome浏览器浏览大人网站,那浏览器就是前台进程。
但你按home键返回主页后,浏览器程序就成了后台进程,在必要的时候会被终止。
举个例子,长按home键可以切换近期的运行的程序,但有时候可以切换到原来暂停的状态(从后台转为前台),有时候却变成了重新运行了(为了启动新进程,中途被进程管理机制给干掉了)。
安卓工作原理
![安卓工作原理](https://img.taocdn.com/s3/m/a46a2d9151e2524de518964bcf84b9d528ea2c91.png)
安卓工作原理安卓系统是目前手机领域最为流行的操作系统之一,它的工作原理是怎样的呢?本文将从安卓系统的架构、核心组件和工作流程三个方面来详细介绍安卓系统的工作原理。
首先,我们来看安卓系统的架构。
安卓系统采用了Linux内核,这使得它具有良好的稳定性和安全性。
在Linux内核的基础上,安卓系统构建了四个主要的组件,分别是应用程序框架、应用程序、系统运行库和Linux内核。
这四个组件共同构成了安卓系统的架构,为安卓系统的正常运行提供了基础支持。
其次,我们来介绍安卓系统的核心组件。
应用程序框架是安卓系统的核心,它包含了各种管理应用程序运行的API和系统服务。
应用程序是安卓系统的重要组成部分,它们通过应用程序框架提供的API来实现各种功能。
系统运行库包含了一系列的C/C++库,为应用程序提供了丰富的功能支持。
Linux内核则负责管理设备驱动程序、内存管理、进程管理等底层功能。
最后,我们来了解安卓系统的工作流程。
当用户启动手机时,Linux内核首先会加载并初始化设备驱动程序,然后启动系统进程。
接着,应用程序框架会被加载并运行,为用户提供各种系统服务和API。
用户通过应用程序与应用程序框架进行交互,应用程序框架再调用系统运行库来实现各种功能。
整个过程中,Linux内核负责管理各种硬件设备,应用程序框架负责管理应用程序的运行,系统运行库负责提供各种功能支持,这样就实现了安卓系统的正常工作。
总的来说,安卓系统的工作原理是基于Linux内核构建的,通过应用程序框架和系统运行库实现各种功能。
安卓系统的架构清晰,核心组件完备,工作流程清晰,这使得安卓系统具有良好的稳定性和灵活性,为用户提供了良好的使用体验。
希望本文能够帮助大家更好地了解安卓系统的工作原理。
androidstartup原理
![androidstartup原理](https://img.taocdn.com/s3/m/bdc5d4866037ee06eff9aef8941ea76e59fa4a5b.png)
androidstartup原理Android是由Google开发的一套开放源代码的操作系统,主要用于移动设备和嵌入式系统。
它被广泛应用于智能手机、平板电脑、智能电视等移动设备中。
Android系统的启动过程是一个复杂的过程,涉及到很多不同的模块和组件。
下面将详细介绍Android系统的启动原理。
Android系统的启动过程主要包括五个阶段:引导加载程序、Linux内核初始化、系统服务初始化、应用程序启动和进程初始化。
首先是引导加载程序阶段。
当设备开机时,引导加载程序会被加载并执行。
引导加载程序主要负责初始化硬件设备,并加载第二阶段的引导加载程序。
在这个阶段,设备会进行一些硬件自检和初始化操作,确保设备能够正常运行。
接着是Linux内核初始化阶段。
在这个阶段,Linux内核会被加载并执行。
Linux内核是Android系统的核心部分,它负责管理系统的各种硬件资源和提供系统服务,同时也是Android系统与硬件之间的桥梁。
在这个阶段,Linux内核会初始化一些重要的子系统,如内存管理、文件系统、网络协议栈等。
然后是系统服务初始化阶段。
在这个阶段,系统服务会被加载并启动。
系统服务是Android系统中的一些核心组件,它们负责提供各种系统功能和服务,如Activity管理、通知管理、电源管理、输入管理等。
在这个阶段,系统服务会被初始化,并通过Binder机制提供接口供应用程序调用。
接下来是应用程序启动阶段。
在这个阶段,一些重要的应用程序会被加载并启动。
Android系统中有一些应用程序是系统级别的,它们在系统启动过程中会被优先加载和启动,如Launcher、Settings等。
在这个阶段,应用程序会被启动,并进入到运行状态。
最后是进程初始化阶段。
在这个阶段,Android系统会创建并初始化一些重要的进程。
Android系统采用了一种轻量级的进程模型,每个应用程序对应一个独立的进程,各个进程之间通过IPC机制进行通信。
安卓应用的基本原理
![安卓应用的基本原理](https://img.taocdn.com/s3/m/9b9e3a4e77c66137ee06eff9aef8941ea76e4bff.png)
安卓应用的基本原理1. 概述安卓应用是指运行在安卓操作系统平台上的应用程序。
安卓应用的基本原理涉及到安卓操作系统的架构、应用组件、应用开发过程等方面的知识。
本文将介绍安卓应用的基本原理,以帮助读者了解安卓应用的内部工作机制。
2. 安卓操作系统架构安卓操作系统采用了一种分层的体系结构,主要包括四个层次:应用层、应用框架层、系统运行库层和Linux内核层。
每个层次负责不同的功能和服务,共同构成了安卓操作系统的整体架构。
•应用层:安卓应用程序运行于此层,包括用户界面、应用组件等。
应用层提供了丰富的功能和服务,使得用户可以进行各种操作和使用各种应用。
•应用框架层:该层提供了一系列的API(应用程序接口),供开发者构建安卓应用时使用。
应用框架层包括了各种服务和管理系统组件的能力,如Activity Manager、Window Manager等。
•系统运行库层:该层包括了一系列的C/C++库,用于支持安卓应用的开发。
这些库包括了图形库、媒体库、网络库等,使得应用可以使用这些库提供的功能。
•Linux内核层:安卓操作系统基于Linux内核开发,它提供了底层的硬件驱动和系统调度等功能。
Linux内核层负责管理和分配设备资源,处理进程管理和调度等底层操作。
3. 应用组件安卓应用由多个不同的组件组成,这些组件能够独立地进行活动,并通过Intent进行通信。
以下是安卓应用的一些常见组件:•Activity:用于处理用户界面的交互,每个屏幕都对应一个Activity。
•Service:后台运行的组件,用于执行长时间运行的任务,如播放音乐或下载文件。
•BroadcastReceiver:用于接收和处理系统广播事件,如网络连接状态变化、电池电量变化等。
•ContentProvider:用于跨应用程序共享数据,提供数据的访问接口。
这些组件通过Intent进行通信,可以启动其他组件、传递数据等。
4. 应用开发过程安卓应用的开发过程通常包括以下几个步骤:1.确定应用的需求和功能,设计应用的用户界面和功能结构。
android robust 原理
![android robust 原理](https://img.taocdn.com/s3/m/c8544b043069a45177232f60ddccda38376be16a.png)
android robust 原理Android是目前移动设备市场上最流行的操作系统之一。
其出色的稳定性和鲁棒性是其成功的重要原因,同时也对于移动应用开发来说是非常重要的。
本文将从Android Robust的原理入手,对其实现原理进行分析,以便更好地了解Android系统的基本架构以及如何开发鲁棒性应用程序。
Android Robust的实现原理主要包括以下几个方面:1. 进程隔离Android系统将每个应用程序视为一个独立的进程,并为每个应用程序分配一个独立的进程空间,以保证每个应用程序之间的隔离。
这种进程隔离可以保证一个应用程序出现崩溃时,不会影响其他应用程序的正常运行,从而保证了系统的稳定性和鲁棒性。
2. 内存管理Android系统采用了进程内存管理和垃圾回收机制,以确保系统在运行过程中不会出现内存泄漏、内存溢出等问题。
同时,Android系统还提供了一些工具,如Heap Profiler、DDMS等,以帮助开发者识别和解决内存管理方面的问题。
3. 异常处理异常处理是Android Robust的另一个重要方面。
Android系统提供了一个完整的异常处理机制,包括Java异常、系统异常、运行时异常、未处理异常等。
通过这些异常处理机制,开发者可以及时检测和解决应用程序中的各种异常问题,从而保证应用程序的稳定性和可靠性。
4. 兼容性Android系统的兼容性也是其鲁棒性的重要方面。
Android系统提供了一套完整的API和开发工具,以帮助开发者确保应用程序在不同版本的Android设备上能够正常运行。
同时,Android系统还支持多种屏幕分辨率、不同大小的屏幕等不同配置的设备,使得应用程序在不同设备上具有良好的兼容性。
5. 安全性安全性是Android Robust的另一个关键方面。
Android系统提供了多个安全层,以保护用户的数据和设备。
例如,Android系统采用了权限控制机制,以确保应用程序只能访问其需要的数据,并保护其余的数据免受未经授权的访问。
手机应用开机自启动管理方法
![手机应用开机自启动管理方法](https://img.taocdn.com/s3/m/5ed0e02c876fb84ae45c3b3567ec102de2bddfb1.png)
手机应用开机自启动管理方法随着智能手机的普及,我们每天都要使用各种各样的手机应用。
然而,很多应用在手机开机时会自动启动,导致手机运行速度变慢,耗电量增加。
为了解决这个问题,我们需要学习一些手机应用开机自启动管理的方法。
一、了解自启动应用的原理在深入了解如何管理自启动应用之前,我们需要了解自启动应用的原理。
自启动应用是指在手机开机时自动启动的应用程序。
这些应用程序通常会在后台运行,以便在需要时能够及时提供服务。
然而,过多的自启动应用会占用系统资源,导致手机变慢,耗电量增加。
二、使用系统自带的管理工具大多数手机都提供了自带的应用管理工具,可以帮助我们管理自启动应用。
在手机设置中,找到应用管理或应用设置选项,然后进入自启动管理界面。
在这个界面上,我们可以看到所有的自启动应用,并选择关闭其中一些不必要的应用。
关闭自启动应用后,手机开机时不会自动启动这些应用,从而减少系统负担。
三、使用第三方应用管理工具除了系统自带的管理工具,还有一些第三方应用管理工具可以帮助我们更好地管理自启动应用。
这些应用通常提供更多的功能和选项,可以更精确地管理自启动应用。
例如,我们可以设置某些应用在特定时间段内不自启动,或者根据需求灵活地开启或关闭自启动应用。
此外,一些第三方应用管理工具还提供了系统清理和优化功能,可以进一步提升手机的性能。
四、手动管理自启动应用除了使用应用管理工具,我们还可以手动管理自启动应用。
在手机设置中,找到应用管理或应用设置选项,然后进入已安装应用列表。
在这个列表中,我们可以找到每个应用的详细信息,包括是否允许自启动。
通过手动设置,我们可以选择关闭某些应用的自启动权限,从而控制自启动应用的数量。
五、定期检查和更新应用手机应用的开机自启动权限可能会随着应用的更新而改变。
因此,我们需要定期检查并更新手机上的应用程序。
在应用商店中,找到已安装的应用列表,检查是否有新的版本可用。
更新应用程序可以修复一些已知的问题,并可能改变应用的自启动权限。
手机应用开启的原理
![手机应用开启的原理](https://img.taocdn.com/s3/m/089a6263ae45b307e87101f69e3143323868f565.png)
手机应用开启的原理概述手机应用开启是指在手机上点击应用图标后,应用程序启动并开始运行的过程。
手机应用开启的原理是通过操作系统和应用程序之间的交互实现的。
本文将介绍手机应用开启的原理,并采用Markdown格式进行编写。
原理解析手机应用开启的原理可以分为以下几个步骤:1.用户点击应用图标:当用户点击手机上的应用图标时,操作系统会接收到用户的交互操作信号,触发应用开启的过程。
2.操作系统查找应用程序:操作系统根据用户点击的应用图标,查找应用程序的安装位置。
手机操作系统一般会将应用程序安装在特定的目录下。
3.加载应用程序到内存:操作系统将找到的应用程序加载到手机的内存中。
加载到内存中的应用程序包含应用程序的代码、资源文件和数据文件等。
4.运行应用程序:加载到内存中的应用程序会被操作系统启动,并开始执行应用程序的代码。
5.显示应用界面:应用程序执行时会创建应用界面,并通过操作系统的图形系统显示在手机屏幕上。
应用界面包含应用程序的菜单、按钮、文本框等用户界面元素。
6.响应用户交互:应用程序在运行过程中会监听用户的交互操作,如点击按钮、输入文本等。
应用程序根据用户的交互操作做出相应的响应。
7.执行应用逻辑:应用程序根据自身的逻辑进行处理,包括数据读写、业务逻辑处理、数据传输等。
列点形式展示手机应用开启的原理可以用以下列点方式来展示:•用户点击应用图标•操作系统查找应用程序•加载应用程序到内存•运行应用程序•显示应用界面•响应用户交互•执行应用逻辑总结手机应用开启的原理是通过操作系统和应用程序之间的交互实现的。
当用户点击应用图标时,操作系统会查找应用程序并加载到内存中,然后运行应用程序并显示应用界面。
应用程序根据用户的交互操作响应,并执行自身的逻辑处理。
手机应用开启的原理是手机操作系统关键的一部分,理解它有助于开发人员更好地编写高效的应用程序。
以上便是手机应用开启的原理的详细介绍,希望对您有所帮助。
*注:本文档仅用于技术交流,不涉及具体的代码实现和具体的操作系统细节。
ANDROID内存管理原理
![ANDROID内存管理原理](https://img.taocdn.com/s3/m/2a3547650c22590102029dd9.png)
ANDROID内存管理原理我们一直听说Android是一个多进程操作系统,那么它是如何处理每一个进程呢?大家可能已经发现 Android自身并没有所谓的关闭进程的说法每当我们要退出一个进程回到桌面/打开另一个程序的时候我们只能按"返回键". 而当我们按下"返回键"后,该进程并没有真正的关闭,仍然保存在内存中. 这样在下次调用的时候可以更快的打开该程序.要想真正的关闭一个已打开的进程,除了用第三方软件(例如advanced task manager)外,还有一个,那就是当Android系统认为当时已经没有足够的内存来运行新的进程,需要关闭一些虽然已经开着,但是没有用了(具体怎样一个进程才会被Android系统认为是"没有用"下面就要讨论到)的进程.而下面要研究的就是这个Android内部的lowmemorykiller.记录着每一个进程的优先级. 一个进程的oom_adj值也就代表了它的优先级. oom_adj值越高代表该进程优先级越低. 一个正在使用的进程的oom_adj值为0,一旦我们按下返回键,这个进程就会得到一个更高的oom_adj值(更低的优先级). 具体多少取决于该进程在LRU(last recently used) list的位置.(未证实) 具体的细节保存在Android源文件drivers/misc/里.Android将进程分为6个等级,它们按优先级顺序由高到低依次是:. R1. FOREGROUND_APP:This is the process running the current foreground app.We'd reallyrather not kill it!r用户正在使用的程序. 这个设的太高,用户看到得就会是一个正在使用的程序莫名其妙的消失了,然后自动回到桌面..(因为它被系统kill了..) 所以最好别动它..2. VISIBLE_APP:This is a process only hosting activities that are visible to the user, so we'd prefer they don't disappear.跟FOREGROUND_APP类似,用户正在使用/看得到. 它们的区别就是VISIBLE_APP可能不是用户focus的程序,但是用户看得到,或者没有覆盖到整个屏幕,只有屏幕的一部分. 所以可以适当的比FOREGROUND_APP高一点.3. SECONDARY_SERVER:This is a process holding a secondary server -- killing it will nothave much of an impact as far as the user is concerned.所有应用的service. 系统级的service比如PhoneService不属于这类,它们是绝不会被Android结束掉的. 所以这个可以适当的设高一点点~ 注意, HOME(SenseUI)也包括在这里因此还是别设的太高. 要不每次返回桌面都得等它重新load,特别是widget多的..4. HIDDEN_APP:. TThis is a process only hosting activities that are not visible, so it can be killed without any disruption.; o" A5 Y- Q4 \! V) r; }本来属于1或者2的程序, 在用户按了"back"或者"home"后,程序本身看不到了,但是其实还在运行的程序,它们就属于HIDDEN_APP了. 干掉没什么影响.. 不过要了解并不是所有属于这一类的就应该马上结束掉,像push mail,locale,闹钟,等都属于这一类. 因此还是别设的过高. 真正"应该"一点返回键就退出的程序(真正没用的程序)在下面.5. CONTENT_PROVIDER:This is a process with a content provider that does not have any clients attached to it.If it did have any clients, its adjustment would be theone for the highest-priority of those processes.5,6的区别具体不太了解..这个也是用处不大,但是还是比EMPTY_APP稍微有点用.. 所以高点没关系~16. EMPTY_APP:0This is a process without anything currently running in it.Definitelythe first to go! This value is initalized in the constructor, careful when refering to this static variable externally.!完全没用的一个,杀了它只有好处没坏处,第一个干它!9 m% s1 G: b% C2 C: r% \查看现在的设置可以:-1. # cat /sys/module/lowmemorykiller/parameters/minfree/ `7 B, J7 ^7复制代码显示出的应该是6个数字,以逗号隔开,例如:21536,2048,4096,5120,5632,6144注意这些数字的单位是page. 1 page = 4 kilobyte.上面的六个数字对应的就是(MB): 6,8,16,20,22,24这些数字也就是对应的内存阀值,一旦低于该值,Android便开始按顺序关闭进程. 因此Android开始结束优先级最低的EMPTY_APP当可用内存小于24MB(6144*4/1024).3 r" r; d- W3 @7有一点没搞明白,它的可用内存不知道是从哪得到.. 明显不是free显示的可用内存,而且貌似compcache跟swap也不影响..要想重新设置该值:&1. # echo "1536,2048,4096,5120,15360,23040" >/sys/module/lowmemorykiller/parameters/minfree& {+ o8 o7 |$ J5 a7 H* K* u! 复制代码这样当可用内存低于90MB的时候便开始结束EMPTY_APP. 而当可用内存低于60MB的时候才开始结束CONTENT_PROVIDER组. 其余四个没动.0 o4 @9 _4 z4 C9 i5 u1 v$注意:通过以上方法改变的数值并非永久.在下次重启后就又恢复到之前的设置. 若想让设置在每次开机执行,将1. echo "1536,3072,4096,21000,23000,25000" >/sys/module/lowmemorykiller/parameters/minfree$复制代码8加入到任意一个开机启动的配置文件. 一般在/system/下的文件都是开机执行的(有的ROM也可能不在这里..) 只需用记事本打开任意一个文件,再把这行加入其中就好.原作者做了一个应用,在market里免费,让大家更改设置更方便,叫"MinFreeManager".上面给出的数字只供参考,具体多少才是最优组合正在研究中..========================8个人经验补充一点:一般前三个不用动,或者只是稍微改高一点就好,毕竟它们比较重要,不要太早结束. 值得关注的是后三个. 它们也可以适当的设大一点. 当然,任何东西都有一个度,像上面例子中EMPTY_APP搞到25000(97MB)并不至于大到离谱,hero 我没有过我在Magic 32A甚至还试过120MB..不过120MB那是有点过头了..游戏玩着玩着就消失回到桌面了(可用内存低于120MB被系统结束任务了).. 因此还是不要太高.我目前的设置(开了32MB的CC加32MB的backing swap @60 swappiness): 1536,2048,4096,8192,11520,192001也许大家还不明白这样做的好处. 这样的好处就是让我们随时有足够的内存来执行我们要运行的程序,而那些真正没用的进程又不会多余的占用着宝贵的内存. 更重要的是这一切都是不需要您的参与或任何第三方软件的协助,完全由Android在后台自动执行. 试想,又有谁会比Android更熟悉的掌握每个进程呢比起那些内存管理程序傻傻的一锅端的方法聪明多了吧~ 让我们从现在开始把那些内存管理程序删掉吧不用在意剩余内存的大小.其实很多人都是把使用其他系统的习惯带过来来了.安卓Android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系.如果你知道java,就能更清楚这机制了.其实和java的垃圾回收机制类似,系统有一个规则来回收内存.进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西.当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊.但事实上他并不影响速度.相反加快了下次启动应用的速度.这本来就是安卓Android标榜的优势之一,如果人为去关闭进程,没有太大必要.特别是自动关进程的软件.到这里有人会说了,那为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候.这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统.所以,论坛上有个更改内存阀值的程序可以有一定改善. 但改动也可能带来一些问题,取决于值的设定.那么,进程管理软件有无必要呢?有的.就是在运行大型程序之前,你可以手动关闭一些进程释放内存,可以显著的提高运行速度.但一些小程序,完全可交由系统自己管理.谈到这里,可能有的朋友会问,如果不关程序是不是会更耗电.我就说说安卓Android后台的原理,你就明白了.安卓Android的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态.所以为什么有的程序切出去重进会到主界面.但是,一个程序如果想要在后台处理些东西,如音乐播放,它就会开启一个服务.服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了.这个在进程管理软件里能看到,标签是service.至于广播什么的我就不涉及了.所以没有带服务的应用在后台是完全不耗电的,没有必要关闭.这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源,何必要关掉他们抹杀这个安卓Android的优点呢?还有一个.为什么安卓Android一个应用看起来那么耗内存.大家知道,安卓Android上的应用是java,当然需要虚拟机,而安卓Android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机.这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存.以上这些设计确保了安卓Android的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现.大家可能是被windows 毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要.大家不妨按我说的习惯来用用这个系统.最后推荐一款进程管理软件,systempanel,market上能搜到,界面友好启动快,功能也不错,用于手动关闭进程很好的软件. 祝大家玩机愉快,这系统开十天半个月都没问题,不是windows.至于为什么开了大程序或者开了好几个程序之后切换会变慢,我的理解如下:1.大程序A已经开启,占用70%内存,如果再想运行一个B,需要50%的内存,则就需要一个将A从内存中释放或者压缩的过程,所以表现出来的就是慢一会儿\B\C\D\E共占用内存80%,运行新程序Z需要 20%的内存,系统内存因为没见过剩余0的时候,也就是应该剩一部分空闲内存,那么就需要从A~E这几个程序中选择一个或者几个来关闭,这一过程也需要耗费系统资源,所以会慢一会儿3.也就是说你手动去杀程序的时候,就是替系统在释放内存,就算你不杀,在需要内存的时候系统也会自动释放.4.不在后台运行的程序(没服务的),即使不杀也不会耗电.在后台运行的(有服务的)程序,如后台放歌,当然会耗电.5.不是说杀进程没用,不然作者就不会推荐进程管理软件了.哪个带服务耗电哪个后台一直在运行,看服务就能看出来,这样的该杀.6,以qq举例,正常的退,会在进程管理里留下qq的运行状态,但不耗电不占cpu,如果你只是切换出去(按小房子而不是退出)那么自然会耗电,因为程序还在运行.(qq后台一样后台就是qq正常退出的时候和别的软件一样不完全退出会在内存里留着但是不占cpu 不费电再次启动就会非常快了这就是为什么android 能超越 WM6的系统的原因)简单的说说房子键和退出键的区别,轻度研究手机的内存管理!!!在运行一个程序时,按一下房子键就可以退到桌面,一般来说按一下退出键也可以退到桌面,这两者有什么区别呢?其实是有区别的,你应该根据自己的需要灵活选择按房子键,看起来似乎是退出了,但是其实这个软件并没有被关闭,而是转为了后台程序(指一般的软件,不讨论特别种类的软件)按退出键,看起来也是退出没错,但这个软件其实是被转为了空置程序(音乐除外,音乐属于有服务的特殊软件)但是,该软件的默认设置确存在一些问题:各类进程的管理策略的阀值相当接近:6,8,16,20,22,24,最大的相差也不到8MB,在实际程序运行中,很容易导致多种类型的进程同时被关闭。
手机软件运行原理
![手机软件运行原理](https://img.taocdn.com/s3/m/2e94125f15791711cc7931b765ce05087632759e.png)
手机软件运行原理手机软件运行原理是指手机上安装的各种应用软件在运行过程中所遵循的基本原则和流程。
手机软件的运行原理主要包括以下几个方面:1. 软件加载和安装:在手机上安装软件时,需要将软件包文件下载到手机存储中,并进行解压缩和安装操作。
安装完成后,软件的相关信息将被记录在手机系统中。
2. 程序加载和启动:当用户点击应用软件图标时,手机系统首先根据软件的标识信息找到对应的程序文件,并将其加载到内存中。
然后,系统根据程序的入口点开始执行代码,完成软件的启动过程。
3. 界面显示与交互:软件启动后,系统会根据程序中的代码逻辑和资源文件,生成应用软件的界面,并将其显示在手机屏幕上。
用户可以通过触摸屏幕、按键等方式与应用程序进行交互,实现点击、滑动、输入等操作。
4. 数据处理与存储:应用软件在运行过程中需要对各种数据进行处理和存储。
这些数据包括用户的个人信息、操作记录、临时数据等。
手机软件会根据程序中的逻辑,将这些数据存储到手机的内部存储器或外部存储卡中,以供后续的读取和使用。
5. 资源管理与优化:手机软件运行期间需要占用一定的系统资源,例如内存、处理器、网络等。
为了保证手机的整体性能和稳定性,系统会对软件的资源使用进行管理和优化,确保各个应用程序之间的资源分配合理,避免出现过度占用或冲突等情况。
6. 安全保护与权限控制:为了保护用户的隐私和手机系统的安全,手机软件运行过程中会进行权限控制。
系统会根据应用软件的安全级别和用户的授权设置,限制软件对手机系统和用户数据的访问权限,以防止恶意软件的攻击和滥用。
总结起来,手机软件运行原理包括软件加载和安装、程序加载与启动、界面显示与交互、数据处理与存储、资源管理与优化、安全保护与权限控制等多个方面,通过这些步骤和机制,手机软件能够正常运行并满足用户的需求。
android应用程序的运行原理
![android应用程序的运行原理](https://img.taocdn.com/s3/m/6e133d0632687e21af45b307e87101f69e31fbcf.png)
Android应用程序的运行原理1. 概述Android应用程序的运行原理是指Android操作系统中应用程序是如何被加载、启动和执行的过程。
理解Android应用程序的运行原理对于开发高质量的应用程序以及解决性能问题至关重要。
2. Android应用程序的生命周期Android应用程序的生命周期可以分为以下几个阶段: - 创建(Creating):当应用程序被创建时,系统会调用应用程序的onCreate()方法。
在这个阶段,应用程序还没有可见的用户界面。
- 开始(Starting):应用程序从创建阶段转移到开始阶段时,系统会调用onStart()方法。
在这个阶段,应用程序已经可见,但用户不能与其进行交互。
- 恢复(Resuming):当应用程序从后台恢复到前台时,系统会调用onResume()方法。
在这个阶段,用户可以与应用程序进行交互。
- 暂停(Pausing):当用户离开应用程序或者有其他应用程序覆盖在其上时,应用程序会进入暂停阶段,系统会调用onPause()方法。
- 停止(Stopping):当应用程序完全不可见时,系统会调用onStop()方法。
- 销毁(Destroying):当用户关闭应用程序或者系统需要释放资源时,系统会调用onDestroy()方法。
3. Android应用程序的启动过程Android应用程序的启动过程可以分为以下几个步骤:- 应用程序的图标点击:当用户点击应用程序的图标时,系统会通过包管理器找到对应的应用程序,并启动它。
- 应用程序进程的创建:系统会为该应用程序创建一个新的进程,并为其分配资源。
- 应用程序的初始化:系统会调用应用程序的onCreate()方法,进行一些初始化工作,例如加载布局、注册事件监听器等。
- 启动主活动(MainActivity):系统会找到应用程序的主活动,并调用其onCreate()、onStart()和onResume()方法,最终将主活动显示在屏幕上。
安卓手机应用总是在后台自动重启运行,大量消耗内存以及电量,有什么好的办法解决吗?
![安卓手机应用总是在后台自动重启运行,大量消耗内存以及电量,有什么好的办法解决吗?](https://img.taocdn.com/s3/m/4022865603768e9951e79b89680203d8ce2f6a04.png)
安卓手机应用总是在后台自动重启运行,大量消耗内存以及电量,有什么好的办法解决吗?安卓系统在后台有大量的程序运行,即使通过内存清理软件清理后,过一会又有很多程序自动开始运行。
由于安卓设计机制,当需要内存时,后台一些程序会自动关闭,释放内存。
可以采取以下方法限制后台程序:1.打开手机设置找到开发人员选项,点击进入。
2.打开开发人员选项后,我们滑到最下方,找到后台进程限制,点击。
3.选择自己需要的模式。
这里有6个选项,可根据自己需要选择相应的模式,默认是标准限制,只在必要时关闭后台程序,建议选择“不得超过4个进程”,限制太少的话会关闭一些需要的程序,比如QQ。
设置后系统会自动选择重要的程序做后台,而很多垃圾软件进程被自动清除。
另外对于一些集成应用不能卸载的可以在程序管理里停用的,可以结合一起使用。
Android采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android 把这些进程都保留在内存中,直到系统需要更多内存为止。
这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。
Android是依据一个名为LRU(last recently used 最近使用过的程序)列表,将程序进行排序,并结束最早的进程。
其实安卓的内存管理机制是这样的,如下:1.系统会对进程的重要性进行评估,并将重要性以“oom_adj”这个数值表示出来,赋予各个进程;(系统会根据“oom_adj”来判断需要结束哪些进程,一般来说,“oom_adj”的值越大,该进程被系统选中终止的可能就越高)2.前台程序的“oom_adj”值为0,这意味着它不会被系统终止,一旦它不可访问后,会获得个更高的“oom_adj”,我们推测“oom_adj”的值是根据软件在LRU列表中的位置所决定的;3.Android不同于Linux,有一套自己独特的进程管理模块,这个模块有更强的可定制性,可根据“oom_adj”值的范围来决定进程管理策略,比如可以设定“当内存小于X时,结束“oom_adj”大于Y的进程”。
android crash原理
![android crash原理](https://img.taocdn.com/s3/m/40b39976ff4733687e21af45b307e87101f6f8b7.png)
android crash原理Android Crash原理引言:在使用Android设备的过程中,我们可能会遇到应用程序崩溃的情况。
这种崩溃是指应用程序在运行过程中突然终止,无法继续执行下去。
而这种崩溃的原因往往可以归结为Android系统或应用程序本身的错误。
本文将探讨Android Crash的原理及其可能的原因。
一、Android Crash的定义Android Crash指的是应用程序在运行过程中出现异常,导致应用程序无法继续执行下去的现象。
在Android系统中,当应用程序出现崩溃时,通常会出现应用程序无响应、黑屏、闪退等情况。
这种崩溃往往会给用户带来不便,同时也会影响到开发者的应用程序质量。
二、Android Crash的原因1. 内存溢出:当应用程序分配的内存超过系统的可用内存时,就会导致内存溢出,进而引发应用程序崩溃。
这种情况通常是由于应用程序中存在大量的内存泄漏或者内存管理不当所致。
2. 空指针异常:空指针异常是Android开发中常见的错误之一。
当应用程序访问一个为空的对象时,就会引发空指针异常,进而导致应用程序崩溃。
3. 线程问题:在Android开发中,应用程序通常会使用多线程来实现异步操作。
当线程未正确管理或者线程之间的通信出现问题时,就会导致应用程序崩溃。
4. 资源问题:Android应用程序中的资源包括布局文件、图片、音频等。
当应用程序在加载或使用这些资源时出现错误,就会导致应用程序崩溃。
5. 第三方库问题:在开发Android应用程序时,通常会使用第三方库来实现功能。
当这些第三方库存在问题或者版本不兼容时,就会导致应用程序崩溃。
6. 数据处理问题:当应用程序在处理数据时出现错误,比如数据格式不正确、数据丢失等,就会导致应用程序崩溃。
7. 设备兼容性问题:Android系统存在着众多的设备厂商和型号,不同的设备可能存在兼容性问题。
当应用程序在某些设备上无法正常运行时,就会导致应用程序崩溃。
安卓工作原理
![安卓工作原理](https://img.taocdn.com/s3/m/958e174bbfd5b9f3f90f76c66137ee06eff94eb1.png)
安卓工作原理安卓系统是目前最流行的移动操作系统之一,它的工作原理是怎样的呢?让我们一起来探讨一下。
首先,安卓系统的核心是Linux内核,它提供了系统的底层功能,包括进程管理、内存管理、设备驱动程序等。
在Linux内核的基础上,安卓系统添加了许多自己的特性,比如用户界面、应用程序框架、多媒体支持等。
安卓系统采用了基于Java的应用程序框架,这意味着开发者可以使用Java编程语言来开发安卓应用。
安卓应用程序框架提供了丰富的API,开发者可以利用这些API来实现各种功能,比如界面设计、数据存储、网络通信等。
安卓应用程序通过Dalvik虚拟机来运行,Dalvik虚拟机是专门为安卓系统设计的,它可以在资源有限的移动设备上高效地运行Java应用程序。
每个安卓应用都在自己的进程中运行,这样可以保证应用之间的隔离性,一个应用出现问题不会影响到其他应用的运行。
安卓应用程序可以通过Intent机制来相互调用,这使得不同的应用可以很方便地共享数据和功能。
另外,安卓系统还提供了广播接收器和内容提供器等组件,开发者可以利用这些组件来实现应用之间的交互。
安卓系统还支持多任务处理,用户可以同时运行多个应用程序,并且可以随时切换到其他应用。
安卓系统会根据应用的优先级来动态调整系统资源的分配,以保证用户正在使用的应用能够获得足够的资源支持。
在安卓系统中,应用程序可以访问各种硬件设备,比如摄像头、GPS、蓝牙等。
安卓系统提供了丰富的API来支持这些硬件设备,开发者可以利用这些API来实现各种功能,比如拍照、定位、数据传输等。
总的来说,安卓系统的工作原理是基于Linux内核的,通过Java应用程序框架来实现应用程序的开发,通过Dalvik虚拟机来运行应用程序,通过各种组件和API来实现应用之间的交互和硬件设备的访问。
安卓系统的设计使得它成为了一个功能强大、灵活多样的移动操作系统,受到了广泛的欢迎和应用。
android的原理及应用
![android的原理及应用](https://img.taocdn.com/s3/m/7df09faff9c75fbfc77da26925c52cc58ad6907f.png)
Android的原理及应用1. 概述Android是一种基于Linux内核的开放源代码操作系统,主要用于移动设备和智能手机。
它提供了丰富的应用程序框架,使开发者能够轻松构建和发布各种类型的应用。
本文将介绍Android的原理及其应用。
2. Android原理Android操作系统的核心是Linux内核,它提供了各种底层功能,包括进程管理、内存管理和设备驱动程序等。
在内核之上,Android还有一个运行时库,称为Dalvik虚拟机(后来被ART虚拟机取代)。
Dalvik虚拟机是专门为移动设备设计的。
它被用来执行Android应用程序,通过将Java字节码转换成Dalvik字节码来提高性能和效率。
Dalvik虚拟机还提供了一套基于Java的应用程序框架,使开发者能够轻松地创建Android应用。
3. Android应用程序框架Android应用程序框架提供了一组库和工具,使开发者能够构建各种类型的应用程序。
下面是Android应用程序框架的一些核心组件和功能:•Activity:Activity是Android应用的基本构建单元。
它表示应用程序中的一个特定界面或操作。
每个Activity都有自己的生命周期,可以接收用户输入事件并显示相应的内容。
•Service:Service是在后台运行的组件,不与用户交互。
它可以执行一些长时间运行的操作,如播放音乐、下载文件等。
•Content Provider:Content Provider允许应用程序之间共享数据。
它提供了一种标准的接口,使得开发者可以轻松地访问和操作共享数据。
•Broadcast Receiver:Broadcast Receiver可以接收系统广播或应用程序发送的广播消息。
它可以用来监听一些系统事件,如网络连接状态变化、电池电量变化等。
•Intent:Intent用于在组件之间进行通信。
它可以启动Activity、启动Service、发送广播等。
android configuration 原理流程
![android configuration 原理流程](https://img.taocdn.com/s3/m/d0669403bf1e650e52ea551810a6f524ccbfcbf9.png)
android configuration 原理流程Android Configuration 原理流程Android是一个开放源代码的移动操作系统,广泛应用于智能手机、平板电脑、智能穿戴设备等移动设备上。
Android系统的配置是为了优化系统的性能和资源管理,使得应用程序能够在各种硬件设备上平稳运行。
本文将通过以下步骤来说明Android配置的原理流程。
一、概述Android的配置涉及到应用程序、设备硬件和操作系统的三方面内容。
应用程序的配置包括应用程序的权限、运行环境、界面布局等;设备硬件的配置包括处理器、内存、存储等硬件资源的管理;操作系统的配置包括系统的启动过程、运行状态的管理等。
二、应用程序的配置1.权限管理Android系统通过权限管理机制来限制应用程序的访问权限,保证用户数据的安全和隐私。
应用程序在安装时会向用户申请一些权限,如访问设备的相机、麦克风、位置等。
用户可以选择授予或拒绝这些权限,而开发者需要在代码中处理权限的申请和使用情况。
2.运行环境配置Android应用程序可以在不同的运行环境中执行,如手机、平板电脑、智能电视等。
为了适配不同的设备,开发者可以为每个设备配置特定的资源文件,如布局文件、图像资源等。
此外,Android还支持不同的屏幕尺寸和分辨率,通过适配器类来自动调整界面的大小和布局。
3.界面布局Android系统使用XML文件来描述应用程序的界面布局,包括控件的位置、大小、样式等。
开发者可以使用布局管理器来控制控件的位置和大小,如线性布局、相对布局、表格布局等。
通过灵活使用布局和控件,可以实现各种复杂的用户界面。
三、设备硬件的配置1.处理器管理Android系统支持多种处理器架构,如ARM、x86等。
为了充分利用处理器的性能,系统会根据处理器的架构进行优化和编译,生成相应的二进制代码。
此外,系统还提供了多线程编程的支持,开发者可以利用多核处理器来提高应用程序的性能。
android开发原理
![android开发原理](https://img.taocdn.com/s3/m/63a321cf8662caaedd3383c4bb4cf7ec4afeb624.png)
android开发原理Android 开发是基于移动设备的操作系统Android进行的软件开发。
Android操作系统基于Linux内核,通过Java语言和各种工具包进行开发。
以下将介绍Android开发的基本原理。
1. 应用组成:Android应用是由多个组件组成的,包括活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供器(ContentProvider)。
2. 活动(Activity):活动是整个Android应用的用户界面,用户通过与活动进行交互来完成各种操作。
每个活动都会在一个窗口中显示,并接收用户输入,并根据用户的操作进行相应的处理。
3. 服务(Service):服务是在后台执行长时间运行的操作的组件。
它没有用户界面,可以在应用运行时和其他应用进行交互。
4. 广播接收器(BroadcastReceiver):广播接收器负责接收和响应来自系统和其他应用发送的广播消息。
例如,设备电池低电量警告、来电等。
5. 内容提供器(ContentProvider):内容提供器用于管理应用程序的数据,可以在不同的应用程序之间共享数据。
例如,通讯录、音乐播放列表等。
6. Android应用的生命周期:每个Android应用都有一个生命周期,包括启动、暂停、停止和销毁等阶段。
开发人员可以通过重写特定方法来处理各个阶段的事件。
7. 用户界面设计:Android提供了丰富的用户界面元素和控件,开发人员可以根据应用的需求创建各种视图和布局。
用户界面可以通过XML布局文件和Java代码来定义和操作。
8. 数据存储和持久化:Android支持多种数据存储和持久化技术,包括SQLite数据库、SharedPreferences和文件系统等。
开发人员可以根据应用的需求选择适合的方法进行数据存储和读取。
9. 多线程编程:Android应用通常需要处理多个并发任务,例如网络请求、图片加载等。
android startup原理
![android startup原理](https://img.taocdn.com/s3/m/069a6d2b7f21af45b307e87101f69e314232fa70.png)
android startup原理
Android的启动过程涉及多个阶段,包括硬件初始化、引导加载程序(Bootloader)启动、内核加载、系统服务器启动等。
以下是Android启动的基本原理:
1. 硬件初始化:Android设备上电后,硬件组件会进行初始化,包括处理器、内存、存储设备、显示屏等。
2. 引导加载程序(Bootloader)启动:引导加载程序是在硬件初始化后启动的,它负责加载操作系统内核并启动系统。
引导加载程序通常存储在设备的固件中,如ROM或eMMC中。
3. 内核加载:引导加载程序加载Android操作系统的内核(Linux内核),并将其载入内存中。
4. 系统服务器启动:一旦内核加载完成,系统服务器(System Server)开始启动,它负责启动Android系统的各个服务和进程,如SurfaceFlinger、Zygote等。
5. 启动应用框架:系统服务器启动后,Android的应用框架会被加载,包括Activity Manager、Package Manager等,这些框架提供了Android应用程序运行所需的环境。
6. 用户界面启动:最后,Android会加载用户界面(UI),包括启动桌面和其他应用程序。
总的来说,Android的启动过程是一个复杂的多阶段过程,涉及硬件初始化、引导加载程序、内核加载、系统服务器启动等多个步骤,最终完成Android系统的启动和用户界面的加载。
应用自动启动的原理
![应用自动启动的原理](https://img.taocdn.com/s3/m/4dca5ac4ed3a87c24028915f804d2b160a4e8658.png)
应用自动启动的原理什么是应用自动启动?应用自动启动是指在设备开机后,应用程序能够自动启动并在后台运行的功能。
这意味着用户不需要手动打开应用程序,即可享受其提供的服务或功能。
应用自动启动的原理应用自动启动的原理可以简单分为两个方面:操作系统控制和应用程序配置。
操作系统控制操作系统起到了关键的作用,它能够在设备开机后自动启动一些应用程序。
这些应用程序通常是操作系统默认支持的,如系统设置、电话、短信等应用。
操作系统通过在设备启动过程中加载这些应用程序的相关组件,实现应用的自动启动。
应用程序配置除了操作系统控制外,应用程序本身也可以通过一些配置来实现自动启动的功能。
这些配置信息通常存储在应用程序的配置文件或数据库中。
应用程序在启动过程中读取这些配置信息,判断是否需要自动启动,并根据配置决定启动时机和运行模式。
应用自动启动的配置方式在大多数操作系统中,应用自动启动的配置方式类似,但具体细节可能有所不同。
以下列举了几种常见的配置方式:1.启动文件配置:应用程序在启动时,检查特定的启动文件或配置文件,判断是否需要自动启动。
这些文件通常存储在操作系统的特定目录下,如Linux系统中的/etc/init.d目录。
2.注册表配置:在Windows操作系统中,应用程序可以通过注册表进行自动启动的配置。
注册表是Windows系统用于存储配置信息的一个重要组成部分,包含了很多应用程序的配置信息。
3.任务计划配置:在Windows系统中,任务计划管理器可以用于设置应用程序的自动启动。
通过任务计划配置,应用程序可以在特定的时间点或事件触发时自动启动。
4.服务配置:类似于操作系统默认的应用程序,一些应用程序可以注册为系统服务,从而实现自动启动的功能。
这些服务通常在设备开机时被加载,并在后台一直运行。
应用自动启动的优势应用自动启动的功能为用户带来了很多便利,主要体现在以下几个方面:1.提升用户体验:应用自动启动能够使用户更快速地访问到所需的功能或服务,提升了用户的体验和满意度。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Android的原理-不需要太多的剩余内存
Android用RAM的方式,跟windows、WM、Sybiam是两回事。
在Android里,RAM被用满了是件好事。
它意味着你可以快速打开之前打开的软件,回到之前的位置。
所以Android 很有效的使用RAM,很多用户看到他们的RAM满了,就认为拖慢了他们的手机。
而实际上,退出后重启这些程序才真正拖慢了手机的响应。
而且这些自动杀进程的软件本身是个时刻活跃的进程,它始终在后台保持活跃使得CPU难以消停,反而增加了耗电量。
不用在意剩余内存的大小.其实很多人都是把使用其他系统的习惯带过来来了.安卓Android大多应用没有退出的设计其实是有道理的,这和系统对进程的调度机制有关系.如果你知道java,就能更清楚这机制了.其实和java的垃圾回收机制类似,系统有一个规则来回收内存.进行内存调度有个阀值,只有低于这个值系统才会按一个列表来关闭用户不需要的东西.当然这个值默认设置得很小,所以你会看到内存老在很少的数值徘徊.但事实上他并不影响速度.相反加快了下次启动应用的速度.这本来就是安卓Android标榜的优势之一,如果人为去关闭进程,没有太大必要.特别是自动关进程的软件.
到这里有人会说了,那为什么内存少的时候运行大型程序会慢呢?其实很简单,在内存剩余不多时打开大型程序,会触发系统自身的调进程调度策略,这是十分消耗系统资源的操作,特别是在一个程序频繁向系统申请内存的时候.这种情况下系统并不会关闭所有打开的进程,而是选择性关闭,频繁的调度自然会拖慢系统.所以,论坛上有个更改内存阀值的程序可以有一定改善. 但改动也可能带来一些问题,取决于值的设定.
那么,进程管理软件有无必要呢?有的.就是在运行大型程序之前,你可以手动关闭一些进程释放内存,可以显著的提高运行速度.但一些小程序,完全可交由系统自己管理.谈到这里,可能有的朋友会问,如果不关程序是不是会更耗电.我就说说安卓Android后台的原理,你就明白了.安卓Android 的应用在被切换到后台时,它其实已经被暂停了,并不会消耗cpu资源,只保留了运行状态.所以为什么有的程序切出去重进会到主界面.但是,一个程序如果想要在后台处理些东西,如音乐播放,它就会开启一个服务.服务可在后台持续运行,所以在后台耗电的也只有带服务的应用了.这个在进程管理软件里能看到,标签是service.所以没有带服务的应用在后台是完全不耗电的,没有必要关闭.这种设计本来就是一个非常好的设计,下次启动程序时,会更快,因为不需要读取界面资源,何必要关掉他们抹杀这个安卓Android的优点呢?
还有一个.为什么安卓Android一个应用看起来那么耗内存.大家知道,安卓Android上的应用是java,当然需要虚拟机,而安卓Android上的应用是带有独立虚拟机的,也就是每开一个应用就会打开一个独立的虚拟机.这样设计的原因是可以避免虚拟机崩溃导致整个系统崩溃,但代价就是需要更多内存.
以上这些设计确保了安卓Android的稳定性,正常情况下最多单个程序崩溃,但整个系统不会崩溃,也永远没有内存不足的提示出现.大家可能是被windows毒害得太深了,总想保留更多的内存,但实际上这并不一定会提升速度,相反却丧失了程序启动快的这一系统特色,很没必要.
至于为什么开了大程序或者开了好几个程序之后切换会变慢,我的理解如下:
1.大程序A已经开启,占用70%内存,如果再想运行一个B,需要50%的内存,则就需要一个将A 从内存中释放或者压缩的过程,所以表现出来的就是慢一会儿
2.A\B\C\D\E共占用内存80%,运行新程序Z需要 20%的内存,系统内存因为没见过剩余0的时候,也就是应该剩一部分空闲内存,那么就需要从A~E这几个程序中选择一个或者几个来关闭,这一过程也需要耗费系统资源,所以会慢一会儿
3.也就是说你手动去杀程序的时候,就是替系统在释放内存,就算你不杀,在需要内存的时候系统也会自动释放.
4.不在后台运行的程序(没服务的),即使不杀也不会耗电.在后台运行的(有服务的)程序,如后台放歌,当然会耗电.
5,以qq举例,正常的退,会在进程管理里留下qq的运行状态,但不耗电不占 cpu,如果你只是切换出去(按小房子而不是退出)那么自然会耗电,因为程序还在运行.
Android将进程分为六大类:
1.前台进程(foreground):目前正在屏幕上显示的进程和一些系统进程。
举例来说,Dialer Storage,Google Search等系统进程就是前台进程;再举例来说,当你运行一个程序,如浏览器,当浏览器界面在前台显示时,浏览器属于前台进程(foreground),但一旦你按home 回到主界面,浏览器就变成了后台程序(background)。
我们最不希望终止的进程就是前台进程。
2.可见进程(visible):可见进程是一些不再前台,但用户依然可见的进程,举个例来说:widget、输入法等,都属于visible。
这部分进程虽然不在前台,但与我们的使用也密切相关,我们也不希望它们被终止(你肯定不希望时钟、天气,新闻等widget被终止,那它们将无法同步,你也不希望输入法被终止,否则你每次输入时都需要重新启动输入法)
3.次要服务(secondary server):目前正在运行的一些服务(主要服务,如拨号等,是不可能被进程管理终止的,故这里只谈次要服务),举例来说:谷歌企业套件,Gmail内部存储,联系人内部存储等。
这部分服务虽然属于次要服务,但很一些系统功能依然息息相关,我们时常需要用到它们,所以也太希望他们被终止
4.后台进程(hidden):虽然作者用了hidden这个词,但实际即是后台进程(background),就是我们通常意义上理解的启动后被切换到后台的进程,如浏览器,阅读器等。
当程序显示在屏幕上时,他所运行的进程即为前台进程(foreground),一旦我们按home返回主界面(注意是按home,不是按back),程序就驻留在后台,成为后台进程(background)。
后台进程的管理策略有多种:有较为积极的方式,一旦程序到达后台立即终止,这种方式会提高程序的运行速度,但无法加速程序的再次启动;也有较消极的方式,尽
可能多的保留后台程序,虽然可能会影响到单个程序的运行速度,但在再次启动已启动的程序时,速度会有所提升。
这里就需要用户根据自己的使用习惯找到一个平衡点
5.内容供应节点(content provider):没有程序实体,进提供内容供别的程序去用的,比如日历供应节点,邮件供应节点等。
在终止进程时,这类程序应该有较高的优先权
6.空进程(empty):没有任何东西在内运行的进程,有些程序,比如BTE,在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息。
这部分进程无疑是应该最先终止的。