Android系统的一些机制说明

其实从很多方面,Android系统的机制都和其他系统也很大不同,更多的时候,用户是把使用其他系统的经验带到了Android手机上,例如很多人买到Android手机的第一件事就是安装“高级任务管理器”或者“Auto task killer”等杀进程软件。那么久从最浅显易懂的方式分享下Android的某些与众不同的机制。

  后台
  
使用过Symbian或Windows Mobile系统的用户普遍都会有一个习惯——频繁关注剩余RAM的多少,恨不得把一份RAM掰成两瓣儿使,且生怕后台有什么应用程序开着耗光手机电量,但Android采用的是不同的内存管理机制:当用户从程序切回主界面时,该程序会被暂停,系统此时不会给它分配CPU资源,这样做一来可以增加下次进入该程序的速度,二来不会在多任务的时候耗电过于严重,三来更不会拖慢系统速度,正所谓一石三鸟。经常使用Android程序的用户可能就有这样的体验,Home键切回主界面再回来的时候,程序还要从主界面再次Loading,这就是该机制所致。
  实际上,Android程序对于RAM的消耗很厉害,这是因为Android实际上是基于Java的,每个打开的应用程序都带有一个Java虚拟机,因此相比其他系统会消耗更多的RAM,但这样做有很大好处——单一的程序崩溃并不会影响到系统的稳定性,算是一个有益的Android特性。
  我们可以看到,Android平台在保证多任务的同时兼具了兼顾了稳定性和速度,但正是由于其他平台给用户带来的思维定势,让很多Android用户认为后台只要开多了自然会变慢,自然会缩短续航时间,但其实用户大可不必在这方面费脑筋。

  回收机制
  细心的朋友可能会问,RAM是有限的,如果被程序占满了怎么办?Android系统在这方面的处理同样是自动化的——内存回收机制,这个机制是由Linux内核中的LowMemory Killer完成的。
  具体来讲就是,Android系统有一个按重要性从高到低排列的表格,所有应用程序按照重要度高低对号入座(分为FOREGROUD_APP,VISIBLE_APP,SECONDARY_SERVER,HOME_APPHIDDEN_APP,CONTENT_PROVIDER,EMPTY_APP等),位于这个排行榜末尾的程序自然就是Android下手的主要对象。例如六个程序分别属于这六个类型,从高到底排为1,2,3,4,5,6,对应的内存阀值分别为8MB,12MB,20MB,32MB,48MB,60MB(假设),当空闲RAM小于48MB的时候,系统会杀掉5和6;当空闲RAM小于20MB的时候,系统会杀掉3到6的程序,此处笔者简化了此机制,实际上是所有程序类型和内存阀值一一对应,严密执行的。因此,用户在使用一般应用程序或待机的时候(例如UC浏览器),完全可以把内存管理的工作交由Android系统来完成。当然,在需要开启大型游戏的时候,杀进程还是有用的,更多空余的RAM能够提高游戏启动速度。

  Flash和跑分
  Android2.2并不是支持Flash的充要条件——除了Android2.2,一个支持Armv7指令集的CPU是必须的,这也是很多Android2.2机型不支持Flash的原因,所以,不要被某些参数给忽悠了。
  Quadrant Advanced这个软件相信Android用户都已经非常熟悉,它能够针对一款Android的硬件从I/O,CPU,3D,2D等方面做出测试,并生成与其他机型和横向柱状图,一时成为很多Android玩家比拼硬件水准的一个标尺。然而笔者在测试过程中发现,类似的软件实际上并不够客观,优化的好坏、固件的版本等因素会很大程度左右测试结果,经过优化的Nexus S甚至能够跑到10000+(双核旗舰一般也在3000左右徘徊),该软件对于双核手机的实际性能也有些无能为力,因此建议大家客观看待这些跑分结果。

  耗电和自启动
  像前文笔者提到的那样,后台进程,例如微信(需要推送)或者音乐播放(需要后台运行)等应用,这些应用再被切换到后台时会自动开启一个Service服务,这些附带Service服务的应用才会消耗CPU资源以及电力。没有Service的一般应用基本是不消耗CPU资源和电力的。
  很多人觉得双核CPU会更耗电,其实使用过摩托罗拉Atrix 4G的用户应该最有发言权,使用双核的Atrix 4G由于核心协同工作提高了工作效率,反而更省电,Android手机最费电还是屏幕,尽可能减少屏幕开启时间和调低屏幕亮度,是延长待机时间最有效直接的方式。
  关于应用程序自启动,相信很多人都有这个疑问,“我明明关了程序,为什么过一会儿它又自动运行了?”笔者查阅了很多资料,相关资料非常少,但笔者可以确定的是,这些自动启动的服务都是插件必须、同步需要,或后台正在运行的Service对应的应用程序,有些时候后台程序并不是真的启动,而是保持了暂停状态,以便用户最快速进入,这是上面提到的Android系统的一个优点,只要启动的程序没有Service项,它们实际上都只是出于暂停状态,并不会消耗CPU资源或者电力,和这些程序较劲其实是没有任何意义的。
  当然,如果真想杜绝它们自启动的话,方法还是有的,第一种是在手机待机的时候关闭网络,这样绝大部分应用程序都不会再自行启动;第二是Root后删除对应的自启动应用程序,从源头上灭掉这些程序,不过这两种方法在笔者看来绝对是弊大于利的。

  App2SD和程序卸载
  关于App2SD,使用PC的经验告诉用户,C盘空间越小PC速度会越慢,因此很多人开始尝试开启App2SD,甚至对存储卡分区,希望将程序转移到SD卡上面,为Android手机省出一定的空间,希望提高手机运行的速度,但这样做也有很大的弊端,第一是会导致耗电的增加,第二是部分插件失效,第三是程序运行效率下降,此外对SD卡也提出了较高的要求。
  关于程序卸载,很多人买到Android手机后,会发现自己无法卸载手机中的一些程序,其实这是和固件有关系的,有些厂商或运营商会将修改版的固件刷入手机,固件中的程序已经属于系统级,自然很难删除,用户只有将自己的手机Root,然后才能进行系统级别的修改。稍不注意这点用户便会被扣费,这也是很多人购买手机时容易忽略的一个方面。

Android系统固件更新机制设计说明文档 Android系统固件更新机制设计说明文档 V1.1 xxx 2014-9-14 修改历史记录 内容 编制\日期 审核\日期 批准\日期 V1.0建立初稿 Xxx 2014-9-14 V1.1 增加配图,统一英文单词大小写 Android启动过程错误修正 Xx... 阅读详情

相关推荐

深入解析RK3399安卓系统下的设备树提取与Linux适配

本文详细介绍了如何从搭载安卓系统的RK3399开发板中提取设备树(DTS),并完成Linux系统的适配工作。通过备份系统镜像、使用专用工具解包boot.img、反编译DTB文件等步骤,获取硬件配置信息。文章进一步讲解了设备树的结构、关键节点修改方法,以及如何重新打包生成适配Linux的新启动镜像,为开发者移植自定义Linux系统提供了完整的技术路径。

weixin_29184075的博客 435

Android中有哪些重要的机制

Activity 生命周期是 Android 中非常重要的一个机制,它描述了一个 Activity 的创建、启动、暂停、恢复、停止和销毁等过程。每个 Handler 都与一个 Looper 相关联,用于发送消息到对应的 MessageQueue 中,并在消息队列中的消息到达时处理它们。Intent 是 Android 中的一个重要机制,用于在不同的组件之间传递消息和数据。Binder 机制是 Android 中进程间通信(IPC)的核心机制,它可以在不同的进程之间传递数据和调用远程方法。

qq_53453519的博客 578

解决虚幻引擎安卓打包报错:环境配置与版本兼容性全攻略

在移动应用开发中,环境配置是项目构建的基础环节,它决定了开发工具链能否正确识别和调用所需的编译资源。其核心原理在于构建系统通过预设的路径或环境变量定位SDK、NDK和JDK等关键组件。正确的环境配置对于保障跨平台编译流程的顺畅至关重要,能有效避免因工具链缺失或版本冲突导致的构建失败。在游戏开发,特别是使用虚幻引擎进行安卓平台部署时,这一问题尤为突出,常表现为引擎无法识别已安装的Android Studio环境。本文聚焦于解决这一典型问题,通过系统化诊断流程,深入分析路径配置、版本匹配等核心环节,并提供从环境

weixin_29016315的博客 329

Android系统架构

目录 一、引言 二、Android架构 2.1 Linux内核层 2.2 硬件抽象层 (HAL) 2.3 Android Runtime & 系统库 2.4 Framework层 2.5 App层 2.6 Syscall && JNI 三、通信方式 3.1 Binder 3.2 Socket 3.3 Handler 四、核心提纲 4.1 系统启动系列 4.2 系统稳定性系列 4.3 Android进程系列 4.4 四大组件系列 4.5 图形系统系列

即将秃头的吕同学的博客 1888

安卓系统分区写保护怎么破?从原理到实战:详解adb disable-verity与remount的关系

本文深入解析安卓系统分区写保护机制,从Verified Boot到dm-verity的技术原理,详细讲解`adb disable-verity`与`remount`的协同工作原理。针对不同安卓版本(包括Android 10+)和厂商定制系统,提供实战操作指南与解决方案,帮助开发者有效突破系统分区写保护,同时兼顾安全考量与替代方案。

weixin_30596023的博客 208

安卓应用商店安装与更新全指南:从签名校验到安全机制

在安卓生态中,应用商店是获取软件的核心入口,但它本身也是一个需要正确安装与更新的特殊应用。理解安卓应用分发的基本原理,如应用签名(Signature)、版本号(versionCode/versionName)以及“未知来源”权限管理,是确保安全使用的前提。数字签名决定了APK来源是否可信,版本号控制着更新逻辑,而系统授权则构建了安装行为的信任链。掌握这些机制,不仅能帮你从官网安全下载并安装应用商店,还能在遇到更新失败或签名冲突时快速定位问题。本文面向普通用户与开发者,通过讲解基础概念与工程实践,演示国内合规

weixin_33794672的博客 455

Android剖析和运行机制

翻译之《Android Anatomy and Physiology》,下载地址:http://download.youkuaiyun.com/detail/wuxiaoer717/6839427 大纲: 1. Android剖析 Linux内核本地库(Native Libraries)Android运行时(Android Runtime)应用框架 2. Android运行机制

Second的专栏 3853

Android车载音频系统概览

官网有些部分的内容描述比较简单,对没有app、系统和底层开发经验,容易一眼扫过,没有留意到相关细节。 本节补充车载音频相关细节。

hwj的博客 785

Android 系统Framework 机制探究

首先查看手机中的进程 直观的感受下系统进程 开启一个 android 5.0的模拟(小编使用android 7.0的模拟器及android 8.0的华为手机,使用 adb shell ps 命令没有信息) 打开一个cmd终端,输入如下命令 adb shell ps #列出系统中所有进程信息 USER:用户 PID:进程号 PPID:父进程号 NAME:进程名,一般情况下,如果是app,则进......

王人冉的博客 1024

安卓15_ROM修改定制化_____修改rom的前提条件 去除各种验证 安卓设备通用

通过博文了解💝💝💝 1-------💝💝💝了解安卓设备的启动流程与核心验证机制 2-------💝💝💝了解安卓设备修改rom中的各种验证机制以及对应的去除方法 3-------💝💝💝了解avb验证与dm验证的本质区别与对应的操作方式 4-------💝💝💝修改rom前的循序步骤 避免验证机制导致的不开机

小马哥的专栏 506

45、安卓系统特权提升攻击深度剖析

本文深入剖析了安卓系统的架构与安全机制,揭示了其权限机制存在的安全缺陷,可能导致特权提升攻击。通过分析攻击示例和场景,探讨了攻击者如何利用应用漏洞、Android脚本环境(ASE)缺陷以及无返回的ROP技术,实现未经授权的操作。文章旨在提醒开发者和用户加强安全意识,采取措施防范此类攻击。

sam99的博客 87

Android 系统开发之Features 配置说明:系统能力声明与裁剪机制

本文介绍 Android Features 的配置机制与排查方法,说明系统如何通过 etc/permissions 下的 XML 声明硬件、软件能力,以及应用和 Framework 如何通过 PackageManager.hasSystemFeature() 判断设备能力。文章重点分析 feature 与 unavailable-feature 的作用差异,并结合 WebView Feature 被屏蔽导致浏览器启动崩溃的案例,说明产品裁剪时需保持 feature 声明、预置模块、HAL、服务能力一致。

yuan_fang123的博客 260

安卓应用中英文切换设置实现指南

在移动互联网时代,应用本地化已经成为提升用户体验和市场竞争力的重要手段。Android平台提供了一套成熟的本地化机制,开发者可以利用这些机制为应用添加多语言支持。本章将介绍Android应用本地化的基本概念,以及它的工作原理。在设计语言切换功能的用户界面时,菜单项是用户与应用进行交互的主要方式。我们通常会用一个下拉菜单或是弹出窗口来展示支持的不同语言,并让用户进行选择。为了实现这一界面,我们首先需要定义一个XML布局文件,它将决定菜单项的样式和布局。

weixin_31938351的博客 1119

Android : 反射机制获取或设置系统属性(SystemProperties)

Android.os.SystemProperties 提供了获取和设置系统属性的方法,但是这个类被隐藏了,应用开发时无法直接访问,可以通过反射的机制进行操作。获取系统属性public static public String getProperty(String key, String defaultValue) { String value = defaultValue; ...

LoongEmbedded的专栏 923

从RADIUS服务器到AP:实战搭建一个小型WPA2-Enterprise测试环境(FreeRADIUS + 家用路由器)

本文详细介绍了如何从零搭建WPA2-Enterprise测试环境,使用FreeRADIUS服务器和家用路由器实现企业级WiFi认证。通过实战指南,包括证书生成、EAP-PEAP配置、OpenWrt路由器设置及故障排查,帮助网络工程师和爱好者掌握802.1X协议栈的实际应用。

weixin_28715953的博客 324

哈工大2024春大数据挖掘期末考试回忆版试题

(3)现有一个用户数量远多于物品(还是物品远多于用户,忘了是哪个了)的情景,应该使用基于user-user的推荐系统还是item-itmen的推荐系统,说明原因。(1)L是n*n拉普拉斯矩阵,x是一个n*1列向量,证明对任意的x,(x)^TLx>=0(6分)(3)证明:p到o的K-可达距离,至少是o的K-distance(2分)(2)(1)的结果说明竞争率的上界是多少?(2)考Gain的意义,如何利用Gain选择划分点(2分)(2)说明如何利用划分后的数据进行验证(2分)(2)k可达距离是对称的吗?

ymd2002的博客 1891

android 按钮焦点事件,Android焦点事件分发与传递机制

如果您对TouchEvent事件分发机制不太了解的,可以参考我的这篇文章——安卓TounchEvent事件分发机制。问题:TV端焦点满天飞,如何解决和处理?记得初入TV开发,以为很简单。TV的这些界面与布局太简单了,分分钟就可以把页面搭建出来,处理好,然后就没有然后了。。。。下面我们就从源码来带大家进行安卓TV焦点事件的传递这里先给出Android系统View的绘制流程:依次执行View类里面的如...

weixin_34867001的博客 733

bcftools学习笔记(一)

欢迎关注"生信修炼手册"!本篇主要介绍index, view, query, sort, reheader这五个命令。1. indexindex命令用于对VCF文件建立索...

庐州月光的博客 6010

android中IPC机制简介

除了Binder,Android还支持Socket,通过Socket也可以实现任意两个终端之间的通信,当然同一个设备上的两个进程通过Socket通信也自然是可以的。什么是进程,进程和线程是截然不同的概念。按照操作系统中的描述,线程是cpu调度最小的单元,同时线程是一个有限的系统资源。IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,是指两个进程间进行数据交换的过程。最简单情况下,一个进程中可以只有一个线程,即主线程,安卓中为UI线程。

Ueming的博客 1706

手把手教你用Vivado的STARTUPE3原语驱动S25FL256S Flash(附完整Verilog代码)

本文详细介绍了如何利用Xilinx UltraScale+系列FPGA的STARTUPE3原语驱动S25FL256S SPI Flash,包括原语配置、SPI协议实现、状态机设计及调试技巧。通过完整的Verilog代码示例和性能优化建议,帮助开发者高效完成Flash通信解决方案的开发与集成。

weixin_30660027的博客 460

车载摄像头+max96712 + rk3568 调试过程中遇到的问题

本文主要讲述本人在调试rk3568通过mipi-csi2链接max967812,max96712再外接4路车载摄像头过程中遇到的问题,以及最终如何解决这些问题。图中会贴上很多重要且关键的波形图,以便读者在调试过程中进行比对,分析。 如果在调试过程中,mipi总线上的波形没得什么问题的话,还是抓图失败的情况下,需要着重检查 频率,lane数,摄像头分辨率,摄像头输入图像格式等重要配置。

Amelio Ming 2065

安卓系统全流程启动

本文详细解析了安卓系统的全流程启动过程,从安全世界与非安全世界的组件层级关系出发,完整描述了从硬件上电到安卓应用启动的全链路流程。系统启动分为六个阶段:ATF安全启动链、OP-TEE初始化、LK引导程序启动、Linux内核加载、安卓框架启动以及应用程序运行。同时阐述了安卓应用与安全世界(OP-TEE)的通信机制,通过SMC调用实现安全服务。整个流程实现了从硬件信任根到用户应用的安全启动链,确保了系统各层级的安全隔离与协作。

weixin_45783574的博客 1309

项目介绍 MATLAB实现基于LSTM-XGBoost长短期记忆网络(LSTM)结合极端梯度提升(XGBoost)进行多变量时序预测的详细项目实例(含模型描述及部分示例代码)

本项目基于MATLAB平台,实现LSTM-XGBoost混合模型进行多变量时序预测。通过LSTM网络自动提取时序特征,结合XGBoost强大的回归能力,有效解决多变量时序数据的高维复杂性、长短期依赖捕捉等难题。项目包含完整的数据预处理流程、模型构建与训练方法,以及性能评估指标。提供的GUI界面支持参数调整、训练监控和结果可视化,适用于能源、金融、气象等多领域预测任务。配套代码详细注释,便于理解模型实现细节,为时序预测研究提供实用参考框架。

优质创作者: 人工智能技术领域 对于有一定基础的 MATLAB和Python带具体需求都可以详谈 MATLAB和Python可以提供代码调试服务加油 谢谢 你的鼓励是我前行的动力 谢谢支持 加油 谢谢 101

安卓广播的使用

/自定义广播注册接收器,需要在第三个参数指定是否允许外部APP进程触发: //RECEIVER_EXPORTED表示允许 RECEIVER_NOT_EXPORTED表示不允许 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { registerReceiver(statusReceiver, new IntentFilter("com.ls.test.loginstatus"), Context.RECEIVER_EXPORTED);

qq_62618558的博客 844

【小程序抓取】解决痛点:如何用 AI-RPA 工具抓取无法获取 URL 的微信小程序数据?

本文探讨了传统爬虫技术在微信小程序数据采集中的局限性,并提出了AI-RPA(人工智能驱动的机器人流程自动化)这一前沿解决方案。随着微信小程序安全防护体系的全面升级(包括证书锁定、加密传输和三级防御机制),传统"抓包-模拟请求"的方式已基本失效。文章对比了Reqable、Fiddler等主流抓包工具的优劣,通过某程旅行小程序案例展示了传统抓包的技术流程和动态参数处理的难点。最终指出,2026年最有效的解决方案是采用AI-RPA技术,通过视觉识别、鼠标键盘模拟、OCR和AI智能体编排的组合方案,直接从小程序UI

ZDQ58818的博客 123

在ABAQUS中使用VUMAT子程序实现Hashin失效准则的详细解析与实践:深入探讨复合材料模拟仿真的高级编程技巧

Hashin失效准则是由材料科学家Shlomo Hashin于1962年提出的一种基于能量方法的多向失效理论,主要用于预测复合材料的破坏行为。与传统的单向失效理论不同,Hashin准则考虑了材料内部的多种独立破坏机制,如基体断裂、界面脱粘、纤维断裂等,这些机制在不同应力状态下可能同时或分别发生。通过计算各个机制的能量释放率,Hashin失效准则能够更为准确地预测复合材料在复杂应力状态下的破坏行为。

qq_38334677的博客 1949
上一篇: Gif图片
下一篇: 添加Fragment机制
biandroid
博客等级 码龄15年 3粉丝 132原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值