Android_Framework
限量发行x
限量发行
展开
-
AndroidX库
1.说明官方原文如下:We hope the division between android.* and androidx.* makes it more obvious which APIs are bundled with the platform, and which are static libraries for app developers that work across ...转载 2019-03-31 00:27:17 · 1072 阅读 · 0 评论 -
SQLite3性能深入分析
SQLite3是移动终端最常用的数据库,它非常轻量,编译后只有数百KB。但它麻雀虽小,五脏俱全,它可以支持多线程,支持事务、约束以及几乎所有的SQL常见特性。iOS中很多App经常会使用到SQLite,在使用SQLite的时候经常会遇到其性能问题。本文将深入SQLite内部实现,分析其性能优化途径。一些基本概念在开始分析之前,首先需要了解一下数据库的基本知识。什么是ACID?...转载 2017-08-19 11:56:34 · 10995 阅读 · 0 评论 -
Android Cursor 源码分析
1. 本文目的AndroidContentProvider提供了进程间数据交换的一种机制。而数据库的查询就是这种机制的应用。那么app通过Uri查询数据库而得到的Cursor究竟是个什么东西?为何可以为我们提供另一个进程的数据?本文以getContentResolver().query(……)函数为起点,全面分析Cursor家族关系类图,理清Cursor跨进程通信的机制。1....转载 2017-08-19 11:16:46 · 903 阅读 · 0 评论 -
SharePreferences源码分析(SharedPreferencesImpl)
在Android提供的几种数据存储方式中SharePreference属于轻量级的键值存储方式,以XML文件方式保存数据,通常用来存储一些用户行为开关状态等,一般的存储一些常见的数据类型。public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bu...转载 2017-09-03 20:55:08 · 710 阅读 · 0 评论 -
SharePreferences源码分析(commit与apply的区别以及原理)
前提概要上一篇文章SharePreferences源码分析(SharedPreferencesImpl),笔者分析了SharedPreferencesImpl的原理,然而结尾有读者评论说想通过源码理解一下commit()与apply()的区别。由于上篇文章已经发布,就不特地加长篇幅了,在此新启一篇分析一下两者的区别。如果对SharedPreferencesImpl的原理还是完全...转载 2017-08-19 11:18:28 · 222 阅读 · 0 评论 -
Android 中的C++线程Thread及它的threadLoop方法
在Android Framework中的代码看见了许许多多的Thread。它们普遍的特点就是有一个threadLoop方法。按照字面的意思应该是这个线程能够循环处理数据。对应我想到到了java上层中的HandlerThread,这个估计也差不多,弄清楚它为什么能够循环,还有它到底是怎么循环起来的?Android中java世界的Thread我们先来看看java是怎么创建一个线程的。这个是最舒服...转载 2019-04-06 17:52:11 · 5459 阅读 · 0 评论 -
Activity、Window、ViewRootImpl和View之间的关系
本文梳理了Activity、View、Window、ViewRoot、Surface、AMS、WMS之间的关系,由于跳转间的流程纷繁复杂,一旦陷入代码细节就难以自拔,下文中分析省略掉很多细节,想了解的可以阅读源码或者阅读相对应的书籍。概念定义ContextImpl:Context实现类。PhoneWindow:Window唯一实现类。Window是一个抽象概念,是添加到WindowMana...转载 2019-04-06 21:34:59 · 407 阅读 · 0 评论 -
Android应用程序UI架构
概述Android系统采用一种称为Surface的UI架构为应用程序提供用户界面。在Android应用程序中,每一个Activity组件都关联有一个或者若干个窗口,每一个窗口都对应有一个Surface。有了这个Surface之后,应用程序就可以在上面渲染窗口的UI。最终这些已经绘制好了的Surface都会被统一提交给Surface管理服务SurfaceFlinger进行合成,最后显示在屏幕上面。...转载 2019-04-07 10:12:24 · 740 阅读 · 0 评论 -
Android应用程序窗口(Activity)的运行上下文环境(Context)的创建过程分析
在前文中,我们简要介绍了Android应用程序窗口的框架。Android应用程序窗口在运行的过程中,需要访问一些特定的资源或者类。这些特定的资源或者类构成了Android应用程序的运行上下文环境,Android应用程序窗口可以通过一个Context接口来访问它,这个Context接口也是我们在开发应用程序时经常碰到的。在本文...转载 2019-04-07 10:24:03 · 312 阅读 · 0 评论 -
Android SQLite详解
在项目开发中,我们或多或少都会用到数据库。在Android中,我们一般使用SQLite,因为Android在android.database.sqlite包封装了很多SQLite操作的API。我自己写了一个Demo来总结SQLite的使用,托管在Github上,大家可以点击下载APK,也可以点击下载源码。Demo截图如下:在使用SQLite时,我建议先下载一个本地SQLite客户端来验证操...转载 2017-08-19 12:01:19 · 362 阅读 · 0 评论 -
SQLiteOpenHelper/SQLiteDatabase/Cursor源码解析
转载请注明出处:http://blog.csdn.net/y_zhiwen/article/details/51583188Github地址,欢迎star和follow新增Androidsqlite native 的代码我们在使用android提供的SQLite存储数据的时候,就会用到SQLiteOpenHelper和SQLiteDataBase,但查询数据的时候会得到一个Cu...转载 2017-08-19 11:59:13 · 599 阅读 · 0 评论 -
Android SyetemServer进程启动过程(基于7.0 N版本源码)
前言上一篇我们学习了Zygote进程,并且知道Zygote进程启动了SyetemServer进程,那么这一篇我们就来学习Android7.0版本的SyetemServer进程的启动过程。1.Zygote启动SyetemServer进程在上一篇文章中我们讲到在ZygoteInit.java的startSystemServer函数中启动了SyetemServer进程,如下所示。framew...转载 2018-11-11 12:38:27 · 219 阅读 · 0 评论 -
Android O 8.0 Notification 源码分析(二)
本编文章针对AndroidO 8.0代码讲述。此版本的SystemUI和Notification较之前版本有一些改动。本编文章讲述展示过程: System Notification --> SystemUI --> Display Notifications。第一编文章《Android O 8.0 Notification 源码分析(一)》讲述生成过程:App create...转载 2018-09-26 00:11:25 · 480 阅读 · 0 评论 -
Android MediaScanner源码分析(上)
本人负责公司手机文件管理器模块的开发,经常跟MediaScanner打交道,本篇跟大家一起讨论一下MediaScanner的整体结构、MediaScanner的扫描流程、如何使用MediaScanner进行自定义扫描。MediaScanner是Android系统Media的基础,系统启动之初,就扫描出Media文件供后续使用,有新媒体加入或者删除掉媒体文件,也需要更新相应的媒体库。An...转载 2018-05-05 11:19:58 · 313 阅读 · 0 评论 -
Android O 8.0 Notification 源码分析(一)
最近在搞SystemUI。这几天把Notification的流程整理了一遍。好记性不如烂博客。本编主要介绍生成过程:App create Notification --> System's NotificationManagerService。另外一编介绍展示过程:System Notification --> SystemUI --> Display Notifica...转载 2018-09-26 00:07:19 · 393 阅读 · 0 评论 -
Android MediaScanner源码分析(下)
MediaScanner位置在frameworks\base\media\下,包括jni和java文件,在Android的SDK里面是看不到这个类的,因为被google隐藏了。通过Android的源码我们可以看到MediaScanner的类注解多了一个@hide的标注。所以对于一般应用开发者,此文意义不是很大,大家可以绕道。在前两篇文章中,最后我们都了解了Android的媒体文件的扫描是在...转载 2018-05-05 11:13:39 · 192 阅读 · 0 评论 -
Android SystemServer启动过程
背景这两天有一个需求得联调,在等待服务端同事完事,等待过程中,阅读了一下Android8.0里SystemServer的启动过程,除了设置时区语言这些,其实主要就是初始化了系统上下文以及一些服务的启动。main()方法SystemServer是一个进程,由zygote进程fork出来,所以它的入口方法就是main方法,代码如下 public static void...转载 2018-09-05 23:02:03 · 530 阅读 · 0 评论 -
JobService的使用及源码分析
Google在Android5.0中引入JobScheduler来执行一些需要满足特定条件但不紧急的后台任务,APP利用JobScheduler来执行这些特殊的后台任务时来减少电量的消耗。本文首先介绍JobSerice的使用方法,然后分析JobService的源码实现。JobService的使用使用JobScheduler的时候需要把待执行的后台任务封装到JobService中提交...转载 2018-04-21 09:53:59 · 636 阅读 · 0 评论 -
Android 7.0中ContentProvider实现原理 - 转自腾讯Bugly
导语 本文描述了ContentProvider发布者和调用者这两在Framework层是如何实现的。作为Android的四大组件之一,ContentProvider作为进程之间静态数据传递的重要手段,其在系统级别的应用中起了重大的作用。毫无疑问ContentProvider核心机制之一也是Binder,但和其它3大组件又有区别。因为ContentProvider涉及数据的增删查改,当数据...转载 2017-10-29 18:19:55 · 1483 阅读 · 0 评论 -
Android异步消息处理机制详解及源码分析
PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN。因为CSDN也支持MarkDown语法了,牛逼啊!【工匠若水http://blog.csdn.net/yanbober转载烦请注明出处,尊重分享成果】最近相对来说比较闲,加上养病,所以没事干就撸些自己之前的知识点为博客,方便自己也方便别人。1 背景之所以选择这个知识点来分析有以下几个原因:逛G...转载 2017-09-06 15:20:23 · 251 阅读 · 0 评论 -
Android应用程序窗口(Activity)的视图对象(View)的创建过程分析
从前文可知道,每一个Activity组件都有一个关联的Window对象,用来描述一个应用程序窗口。每一个应用程序窗口内部又包含有一个View对象,用来描述应用程序窗口的视图。应用程序窗口视图是真正用来实现UI内容和布局的,也就是说,每一个Activity组件的UI内容和布局都是通过与其所关联的一个Window对象的内部的一个View对象来实现的...转载 2019-04-07 10:32:01 · 416 阅读 · 0 评论