Android进阶
文章平均质量分 93
Vinson武
Android开发程序猿
展开
-
SharedPreferense原理和缺陷分析
SharedPreferense 实现原理简介SharedPreferences是Android提供给我们的用于存储轻量级K-V数据的持久化方案。以XML文件的形式存储在/data/data/packageName/的shared_prefs文件夹。它提供了 putString()、putString(Set)、putInt()、putLong()、putFloat()、putBoolean() 六种数据类型。(注意没有Double)使用示例//根据文件名,获取SharedPreferences对原创 2021-07-31 13:45:22 · 702 阅读 · 0 评论 -
性能优化-绘制优化
前言卡顿场景可分为以下四类:UI绘制:绘制、刷新应用启动:安装启动、冷启动、热启动页面跳转:页面间切换、前后台切换事件响应:按键、系统事件、滑动这四种卡顿场景的根本原因又可以分为两大类:界面绘制:主要原因是绘制的层级深、页面复杂、刷新不合理。数据处理:导致这种卡顿场景的原因是数据处理量太大,一般分为三种情况:一是数据处理在UI线程(这种应该避免)。二是数据处理占用CP...原创 2020-02-18 23:06:19 · 506 阅读 · 0 评论 -
性能优化-内存优化
内存优化虽然Android有有优秀的内存管理机制,内存释放有垃圾收集器(GC)来回收。但内存的不合理使用还是会造成一系列的性能问题,比如短时间分配大量内存对象、内存泄漏等问题。本篇讲述如何检测内存问题和解决,希望在内存优化方面能够提供一些帮助。Android内存管理机制首先学习Android内存管理机制,了解系统如何分配和回收内存。Java对象生命周期Java对象在虚拟机上运行有7个阶段...原创 2020-02-22 15:12:43 · 295 阅读 · 0 评论 -
性能优化-耗电优化
耗电优化耗电检测工具Battery Historian是一款Google提供的Android系统电量分析工具,能直观显示手机的电量消耗过程。Battery Historian使用步骤初始化Battery Historian,使用adb命令adb shell dumpsys batterystats --enable full-wake-historyadb shell dumps...原创 2020-02-22 21:32:55 · 466 阅读 · 0 评论 -
性能优化-安装包大小优化
安装包大小优化安装包大小对应用的使用没什么影响,但提高来用户的下载门槛。减少安装包大小用户更愿意下载和体验。减少安装包大小之前先了解安装包(APK文件)的构成。应用装包的构成APK是一个压缩文件,包含Android应用程序的所有内容,是Android平台用于安装应用程序的文件。assetsassets目录可以根据应用需求存放任何文件夹架构,如配置文件、资源文件,这些文件的内容可通过A...原创 2020-02-22 22:41:29 · 501 阅读 · 0 评论 -
性能优化-稳定性优化
稳定性优化稳定性中两个常见场景:Crash和ANR提高代码质量代码审查何时审查分两个方面:一是这个模块是否需要审查,明确代码审查的必要性,二是在开发阶段的哪个时间点代码审查,确定审查合理时间点。一般审查:底层公共模块、重大特性业务代码、与其他模块有耦合、新手、应用即将发布前的紧急修改。谁来审查代码审查分为三种方式团队审查:底层通用模块模块负责人审查:某些模块化的功能...原创 2020-02-23 23:46:13 · 393 阅读 · 0 评论 -
View的工作原理和自定义
初识ViewRoot和DecorViewViewRoot对应于ViewRootImpl类,,它是连接WindowManager和DecorView的纽带,view的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对象被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对象,并将ViewRootImpl对象和D...原创 2020-02-26 13:51:11 · 140 阅读 · 0 评论 -
跨进程通信和Binder机制
Android中进程和线程的关系和区别线程是CPU调度的最小单元,同时线程是一种有限的系统资源;而进程一般指一个执行单元,在PC和移动设备上指一个程序或者一个应用。进程有自己独立的地址空间,而进程中的线程共享此地址空间,都可以并发执行。一般来说,一个App程序至少有一个进程,一个进程至少有一个线程(包含与被包含的关系),通俗来讲就是,在App这个工厂里面有一个进程,线程就是里面的生产线...原创 2020-04-16 15:47:46 · 456 阅读 · 0 评论 -
AMS和Activity启动过程
AMSAMS的功能==统一调试应用程序的Activity==:应用程序要运行Activity,首先会报告给AmS,然后由AmS决定该Activity是否启动。AMS必须知道各个应用程序运行的Activity。==内存管理==: Activity退出后,其所在的进程并不会被立即杀死,从而在下次启动的时候,提高Activity的启动速度。这些Activity只有在内存吃紧的时候,才会被自动杀死...原创 2020-04-16 16:02:08 · 360 阅读 · 1 评论 -
Window和WMS
1.Window与WindowManagerWindow是一个抽象类,==它的具体实现是PhoneWindow==,==Window创建时通过WindowManager完成==。WindowManager与WindowManagerService交互是一个IPC过程。Flags--Window属性FLAG_NOT_FOCUSABLE--表示当前Window不需要焦点,也不需要接收事件,事...原创 2020-04-26 19:37:13 · 186 阅读 · 0 评论 -
Android进阶面试题
1. Android系统启动流程是什么?==Android系统核心流程==:==启动电源以及系统启动==:当电源按下时引导芯片从预定义的地方(固化在ROM)开始执行,加载引导程序BootLoader到RAM,然后执行。==引导程序BootLoader==:BootLoader是在Android系统开始运行前的一个小程序,主要用于把系统OS拉起来并运行。==Linux内核启动==:当内核启...原创 2020-04-26 19:50:10 · 648 阅读 · 0 评论