Android系统
文章平均质量分 79
Kitty_London
正在输入,边学边走。。。
展开
-
Android应用管理二 --APK包的安装、卸载和优化(PackageManagerService)
主要讲解PackageManagerService中的安装过程原创 2015-06-15 14:29:32 · 6219 阅读 · 1 评论 -
Android组件管理--应用程序启动流程
Activity的启动流程相对复杂一些,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等。前言我们先看一下源码中对Activity的描述,如下:An activity is a single, focused thing that the user can do. Almost all activ原创 2018-01-02 16:12:37 · 1200 阅读 · 0 评论 -
Android内存优化--OOM
Android内存优化是性能优化很重要的一部分,而如何避免OOM又是内存优化的核心。 Android内存管理机制 Android系统的Dalvik虚拟机扮演了常规的内存垃圾自动回收的角色,Android系统没有为内存提供交换区,它使用paging与memory-mapping(mmapped)的机制来管理内存,简要概述一些Android系统中重要的内存管理基转载 2017-12-06 17:48:12 · 520 阅读 · 0 评论 -
Android开机流程分析 -- init进程
init进程(system\core\init)是Linux Kernal启动之后,运行的第一个进程。init进程在Android系统启动过程中起到至关重要的作用,init进程都被赋予了哪些职责呢,下面进行详细分析。原创 2015-05-08 09:12:18 · 1549 阅读 · 0 评论 -
Android开机流程分析 -- 概述
了解Android整体开机流程,对优化开机流程解决开机慢等问题很有帮助。Android开机流程主要分为三个阶段,第一阶段为Bootloader引导阶段;第二阶段为Linux Kernal启动阶段;第三阶段为Android启动阶段。原创 2015-05-07 16:27:14 · 930 阅读 · 0 评论 -
连接Java和C/C++层的关键--Android的JNI
JNI的作用 JNI是Java Native Interface(Java本地接口)的缩写。是从Java继承而来的,在Android中JNI的作用大大增强了。Android作为一种嵌入式操作系统,有大量和驱动、硬件相关的功能必须在native层实现,另外一些注重性能、功耗的功能使用C/C++来实现也优于Java来实现。因此,在Android开发中,无论是应用开发,还是系统开发都离不开JN转载 2017-11-23 14:37:13 · 793 阅读 · 0 评论 -
Android 电量统计
各软硬件耗电量的计算。转载 2016-04-15 20:43:17 · 3441 阅读 · 0 评论 -
功耗优化--对齐唤醒
概况Android手机上安装的很多应用都会频繁唤醒手机(唤醒系统、唤醒屏幕),造成手机耗电等现象。良好的对齐唤醒管理方案,就是对后台应用待机时不频繁唤醒,智能节省电量。实现原理:APK作为该功能的入口,勾选应用后,将勾选的应用写入黑名单,并通知framework黑名单内容变化;framework接收到通知后,自动获取黑名单中的应用,保存到列表中;在framework调用接口中检测应用是原创 2017-03-29 21:15:33 · 6910 阅读 · 0 评论 -
Android的消息机制
Android的消息机制 消息驱动是一种进程或线程的运行模式。内部、外部的各种事件都可以放到消息队列中按序处理。这种模式特别适合处理大量的交互事件。Android应用的UI线程,同样采用了消息驱动模式,所有外部来的按键消息、触屏消息、各种系统Intent、广播等都会转化为内部的消息,然后在主线程中分发处理。消息模型 Android中与消息机制相关的类主要有:Looper、Handler转载 2016-12-06 11:32:05 · 902 阅读 · 0 评论 -
Android面试常见问题及解答
性能优化性能优化包含了性能设计和性能优化两个阶段.通过充分利用底层实现机制,诸如:局部算法、代码写法、编程语言技巧、界面Layout优化、控件的选择、编译器选项等,围绕性能关键流程去优化代码细节。内存泄露主要原因:内存泄露:程序中存在对无用对象的引用,导致GC无法回收。内存超限:保存了多个耗用内存过大的对象(如Bitmap)。常见导致内存泄露的问题:注册没取消造成内存泄原创 2017-05-10 10:15:38 · 922 阅读 · 0 评论 -
Android7.1 亮度自动调节
1、代码主要涉及到frameworks/base/services/core/java/com/android/server/display 目录下的AutomaticBrightnessController.java。2、AutomaticBrightnessController.java中的一些变量mScreenAutoBrightness:屏幕亮度级别是由自动亮度算法决定的,实际的亮原创 2017-03-28 15:01:51 · 12359 阅读 · 3 评论 -
Android HAL层简要分析
新的HAL框架Hal Stub框架分析Hal Stub的框架比较简单,主要记住三个结构体、两个常量、一个函数,简称321架构,定义在:/hardware/libhardware/include/hardware/hardware.h;/hardware/libhardware/hardware.c。三个结构体struct hw_module_t;原创 2017-04-07 17:09:09 · 843 阅读 · 0 评论 -
Android事件分发机制
UI界面组成/** * Abstract base class for a top-level window look and behavior policy. An * instance of this class should be used as the top-level view added to the * window manager. It provides sta转载 2018-01-15 18:15:28 · 375 阅读 · 0 评论 -
Android应用管理四 -- APK包的安装、卸载和优化(PackageManagerService)
http://www.oneplusbbs.com/thread-759852-1-1.htmlhttp://blog.csdn.net/kc58236582/article/details/53393570什么是ODEX?Android应用程序中有一个叫做classes.dex的文件,这是Java源码经过ADT的编译后会转换出来的。它是Android系统中可以在Dalvik虚拟机上直接运行的文件原创 2018-01-23 17:52:03 · 1567 阅读 · 0 评论 -
Android应用管理一 -- APK包的安装、卸载和优化(PackageManagerService)
Android的应用管理主要是通过PackageManagerService来完成的。PackageManagerService服务负责各种APK包的安装、卸载、优化和查询。原创 2015-06-10 16:48:29 · 19316 阅读 · 2 评论 -
Android广播管理一--Broadcast机制介绍
在Android系统中,广播(Broadcast)是在组件之间传播数据(Intent)的一种机制;这些组件甚至是可以位于不同的进程中,这样它就像Binder机制一样,起到进程间通信的作用。 在Android系统中,为什么需要广播机制呢?广播机制,本质上它就是一种组件间的通信方式,如果是两个组件位于不同的进程当中,那么可以用Binder机制来实现,如果两个组件是在同一个进程中,那么它们之间原创 2018-01-09 10:25:50 · 1092 阅读 · 0 评论 -
Android性能优化 -- 自启动管理
自启动管理简介Android手机上安装的很多应用都会自启动,占用资源越来越多,造成系统卡顿等现象。良好的自启动管理方案管理后台自启动和开机自启动,这样就可以节约内存、优化系统流畅性等。自启动管理流程分析自启动管理的实现贯穿了应用APK(AutoRun.apk)以及framework的ActivityManagerService等。实现流程比较复杂,下面分阶段地介绍整个流程。原创 2017-04-11 15:56:39 · 10302 阅读 · 0 评论 -
Android性能优化 -- 布局优化
一、前言根据Google官方出品的Android性能优化典范,60帧每秒是目前最合适的图像显示速度,事实上绝大多数的Android设备也是按照每秒60帧来刷新的。为了让屏幕的刷新帧率达到60fps,我们需要确保在时间16ms(1000/60HZ)内完成单次刷新的操作(包括measure、layout、draw),这也是Android系统每隔16ms就会发出一次VSYNC信号触发对UI进行渲染的原创 2018-03-01 14:14:25 · 472 阅读 · 0 评论 -
Android 从setContentView谈Activity界面的加载过程
Android窗口 先来了解下Android系统的窗口布局。当我们设置窗口的Theme为可见样式时,Android的窗口如下图: 查看Activity的源码,Activity中有一个私有成员Window(mWindow),而Window是一个抽象类,它提供了绘制窗口的一组通用API(如下第一段代码);PhoneWindow继承自Window,是Window的具体实现类;原创 2018-01-31 16:05:37 · 692 阅读 · 0 评论 -
Android性能优化 -- 应用启动优化之启动页设计
上篇博客我们学习了应用启动优化的一些优化思路,经过这些优化后,如果还不能达到你的要求,我们一般会做个启动页。因为启动页一般View数量比较少,业务逻辑比较简单,因此启动比较快。一、设计思路常规启动页设计思路通常点击桌面就会执行Application中的逻辑,然后会跳入启动页SplashActivity,通常展示一个图片和logo,然后2或3秒后,并且SplashActivity里面可以去做一些Ma...原创 2018-02-08 18:01:39 · 580 阅读 · 0 评论 -
Android性能优化 -- 应用启动优化
应用的启动启动方式通常来说,在Android中应用的启动方式分为两种:冷启动和热启动。1、冷启动:当启动应用时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这个启动方式就是冷启动。2、热启动:当启动应用时,后台已有该应用的进程(例:按back键、home键,应用虽然会退出,但是该应用的进程依然会保留在后台,可进入任务列表查看),所以在已有进程的原创 2018-02-07 16:26:06 · 695 阅读 · 0 评论 -
Android7.0 Doze模式
在Android M中,Google就引入了Doze模式。它定义了一种全新的、低能耗的状态。在该状态,后台只有部分任务被允许运行,其它任务都被强制停止。这里我们就来分析一下Android 7.0中Doze模式相关的流程。基本原理基本原理 Doze模式可以简单概括为: 若判断用户在连续的一段时间内没有使用手机,就延缓终端中APP后台的CPU和网络活动,以达到减少电量消耗的转载 2018-01-18 17:23:09 · 6266 阅读 · 1 评论 -
Android性能优化 -- Systrace工具
Systrace简介 一般来说,我们的机器以60帧/秒显示时,用户会感觉机器很流畅,如果显示时出现丢帧的情况,需要知道当前整个系统所处的状态,这个时候Systrace便是最佳的工具选择。 Systrace是Android4.1中新增的性能数据采样和分析工具。它可帮助开发者收集Android关键子系统(如Surfaceflinger、WindowManagerService等fr原创 2018-01-30 10:43:18 · 16454 阅读 · 0 评论 -
Android应用管理三 -- APK包的安装、卸载和优化(PackageManagerService)
installd是一个native的守护进程,在安装应用的过程中,执行APK文件优化、创建、删除应用的数据文件等操作实际上是通过installd守护进程完成的。原创 2015-07-03 20:10:21 · 2180 阅读 · 1 评论 -
Android性能优化 -- 内存管理机制
1、初识内存优化在Android的性能优化的各个部分里,内存的问题绝对是最令人头疼的一部分,虽然Android有垃圾自动回收机制不需要手动干预,但也正因为此,出现内存问题,如内存泄漏和内存溢出等,如果对内存管理机制不熟悉,会更加难以排查问题。因为内存方面的知识较多且不易理解,内存优化部分就分两篇文章进行,本文主要是关于Java、Android的内存分配、回收、GC等理论知识。2、内存分转载 2018-01-24 09:27:28 · 476 阅读 · 0 评论 -
Android手机中如何预置APK
如何将带源码的APK预置进系统下面以预置一个名为Test的APK为例。在packages/apps下面以需要预置的Apk的名字创建一个新文件夹,这里为创建Test文件夹。将Test apk的source code拷贝到Test文件夹下,删除/bin和/gen目录。在Test目录下创建一个Android.mk的文件,内容如下:转载 2017-01-12 20:38:15 · 1218 阅读 · 0 评论 -
Android.mk--编译Android的模块
Android中的各种模块,无论是APK应用、可执行程序还是jar包,都可以通过Build系统编译生成。在每一个模块的源码目录下,都有一个Android.mk文件,里面包含了模块代码的位置、模块的名称、需要链接的动态库等一系列的定义。原创 2015-09-14 18:01:37 · 5429 阅读 · 0 评论 -
Android函数调用堆栈打印方法
RuntimeException e = new RuntimeException("leon is here");e.fillInStackTrace();Slog.i(TAG, "xxx" + value, e);Android framework 在线调试比较困难,不好设置断点查看调用堆栈。使用上面的代码可以将对应方法的所有调用过程打印出来。参考:http://blo转载 2016-10-10 10:07:19 · 1351 阅读 · 0 评论 -
Android5.1--电源管理之省电模式分析
一、如何开启5.0省电模式打开安卓5.0设备的设置选项,然后前往电池菜单,点击菜单键,弹出并选择“节电助手”,随后点击顶部的开关便可。此外,要是用户运行的是原生版安卓,可以下拉安卓通知中心,然后点击电池按钮,便可进入电池界面,找到“省电模式”。 开启此模式后,屏幕亮度会调低,后台数据(大部分)关闭,动画全部取消,震动关闭,基本上和厂商们的省电模式行为差不多,都原创 2015-09-22 15:26:05 · 6914 阅读 · 3 评论 -
Android--应用安装卸载失败问题分析
1、应用安装失败08-04 17:15:23.118W/dalvikvm( 5253): DexOptZ:zip archive '/data/app/***.cloneit-1.apk' does not include classes.dex08-04 17:15:23.118W/installd( 266): DexInv:--- END '/data/app/***c原创 2015-08-05 17:59:39 · 7225 阅读 · 1 评论 -
如何判断一个未安装的APK是Launcher应用
网上找的大都是已安装应用的判断方法,那么如何判断未安装的apk是否是桌面应用呢?直接上代码: private boolean isLauncherApp(String dexPath) { boolean isHomeCategory = false; try { Class classPackageParser = Class原创 2015-11-04 09:38:20 · 2746 阅读 · 1 评论 -
Android--SparseArray<E>详细介绍
最近在Android源码时,发现很多地方使用到了SparseArray<E>,翻阅资料,现整理一下SparseArray的使用原创 2015-08-05 16:23:59 · 572 阅读 · 0 评论 -
Android普通应用程序使用system权限
Android 在标准Linux系统上扩展了很多用户。在Android 4.1中,定义这些用户的文件为system/core/include/private/android_filesystem_config.h在这里也就直接粘贴过来吧#define AID_ROOT 0 /* traditional unix root user */转载 2015-08-13 09:50:06 · 1099 阅读 · 1 评论 -
Linux 常用函数
stat()、waitpid()、strlcpy()、原创 2015-08-12 22:14:52 · 520 阅读 · 0 评论 -
Android5.1--多用户模式
Android中的多用户与windows中的多用户类似,可以支持多个用户使用系统。通常,第一个在系统中注册的用户将默认成为系统管理员。不同用户的锁屏设置、壁纸等系统设置各不相同,并且不同用户安装的应用及应用数据也不相同。但是系统中和硬件相关的设置则是共用的,例如网络设置等。原创 2015-08-10 11:43:30 · 18288 阅读 · 2 评论 -
Android执行shell命令(top查看CPU信息)
转载http://vaero.blog.51cto.com/4350852/778139一、方法/** * 执行一个shell命令,并返回字符串值 * * @param cmd * 命令名称&参数组成的数组(例如:{"/system/bin/cat", "/proc/version"}) * @param workdirectory * 命令执行路径(例如:"sys转载 2015-07-09 11:02:56 · 5916 阅读 · 0 评论 -
Android--Recovery模块之升级过程
本节继续分析一下升级过程。Android中sideload的安装方式比较少见,并且是比较复杂的,我们通过分析这种升级方式来了解Recovery的升级过程。原创 2015-06-18 21:46:56 · 5926 阅读 · 2 评论 -
Android--Recovery模块之恢复出厂设置
主要讲解一下Recovery模块的恢复出厂设置流程,上层入口主要是将恢复出厂设置命令写入/cache/recovery/command文件,并进行重启;重启后系统进入bootable的recovery模块,获取启动参数,执行命令,退出Recovery,根据参数选择关机或重启。原创 2015-05-28 09:54:16 · 11135 阅读 · 2 评论 -
Android分区
安卓手机和平板一般包括以下标准内部分区:/boot/system/recovery/data/cache/misc另外还与SD卡分区:/sdcard/sd-ext system 分区这里是挂载到/system目录下的分区。这里有 /system/bin 和 /system/sbin 保存很多系统命令。它是转载 2015-05-28 15:29:33 · 934 阅读 · 0 评论 -
Android开机流程分析 -- init进程之配置文件解析
init.rc配置文件解析(system/core/rootdir/init.rc),分别讲解了Action、Service、PropertyService解析过程。原创 2015-05-12 11:35:12 · 2255 阅读 · 0 评论