安卓-源码分析
晓涵涵
宁静方能致远
展开
-
Okhttp源码解析(一)
Okhttp(官网、github)作为安卓主流的网络加载框架,其基本使用相信大家已经很熟悉,通过简单的依赖和设置参数即可完成网络的请求,且包含丰富的API方便调用,例如简单的图片加载实例。本文旨在学习其源码相关的知识,了解网络加载背后源码的执行流程,方便更好的使用该框架和解决问题。1、网络加载的执行流程 OkHttpClient client = new OkHttpClient .Builder() .build();原创 2020-05-31 23:21:36 · 405 阅读 · 0 评论 -
Android的IntentService的源码分析
1、简述由于Service作为四大组件之一,其运行在主线程中,无法执行耗时操作,通过如果需要执行耗时操作需要创建线程来执行异步任务,但其实不用自己创建线程,安卓原生中提供了一种类:IntentService。其是一种继承自Service的异步请求类。2、简单使用public class TestIntentService extends IntentService { privat...原创 2020-02-03 22:50:22 · 226 阅读 · 0 评论 -
Android的HandlerThread的源码分析
1、简介HandlerThread顾名思义,就是Thread与Handler相结合,其本质还是一个线程,只是在该线程中添加了该线程相关的Handler,实现了轻量级的异步类,具有以下特点:普通线程类:与普通线程的使用类似,需要通过新建线程对象并调用start()开启线程;内部嵌套了Handler:包含与该线程相绑定的Handler,方便线程之间的数据交互;串行运行:其内部通过Looper...原创 2020-02-03 20:29:45 · 323 阅读 · 0 评论 -
Android Handler的源码分析
1、简述由于安卓中为了确保界面的更新同步,限制了只有UI(主)线程可以更新界面,但是UI线程不能执行耗时操作,相关的文件读取、数据加载和网络请求等操作,需要放置在子线程进行处理,但处理完成后怎样将子线程的处理结果及时的发送至主线程呢?此时就需要引入Handler的运行机制,通过Hnadler的创建、发送和处理方式,实现跨线程的数据通信。其实Handelr主要用于线程间通信的,但在安卓开发中一...原创 2020-02-02 17:32:14 · 1798 阅读 · 0 评论 -
Android 的 LocalBroadcastManager 源码分析
1、简述在安卓中广播通常分为普通广播、有序广播、粘性广播和本地广播,其中本地广播相比而言具有以下特点安全:本地广播只能在其APP中发送和接收,其他应用无法获取和接收;高效:本地广播发送和接收效率较高;简单:无静态注册方式,使用其封装后的注册、发送和解除方法。2、简单使用获取对象:通过LocalBroadcastManager获取LocalBroadcast对象;mLocalB...原创 2020-02-01 19:34:08 · 2928 阅读 · 0 评论 -
Dalvik和ART
在-----讲解了Java的虚拟机JVM相关的知识,但JVM主要是用于pc端的应用,针对Android设备中提出了Dalvik和ART两种虚拟机,但关于这两种虚拟机涉及的知识点十分广,本文针对学习《Android晋级之光》和平时的工作总结,作简单分享。一、Dalvik 虚拟机Dalvik 没有遵循JVM规范来实现,因此Dalvik 与JVM存在以下不同点:基于架构不同:JVM基于栈去读写数...原创 2019-10-20 19:34:48 · 2560 阅读 · 0 评论 -
Android 8.0系统启动流程_Launcher(四)
本系列主要介绍Android8.0系统启动过程中涉及到的init、Zygote、SystemServer和Launcher。在之前的三篇文章中,讲解了如下的过程:初始化化:电源上电,加载BootLoader程序; 启动init.cpp,解析init.rc配置文件;启动Zygote进程:启动虚拟机和注册JNI方法;注册Socket服务端,预加载资源;执行runSelectLoop()方法等待...原创 2019-09-29 07:04:48 · 3270 阅读 · 0 评论 -
Android 8.0系统启动流程_SystemServer(三)
本系列主要介绍Android8.0系统启动过程中涉及到的init、Zygote、SystemServer和Launcher。原创 2019-09-28 17:10:38 · 616 阅读 · 0 评论 -
Android 8.0系统启动流程_Zygote(二)
本系列主要介绍Android系统启动过程中涉及到的init、Zygote、SystemServer和Launcher。文本分析的源码时基于Android8.0源码。Zygote(孵化器),系统中DVM、ART、应用程序进程和SystemServer进程都是由Zygote创建,其中SystemServer是应用层开发经常碰到的,因为应用层APP的进程是通过SystemServer进程创建出来的。...原创 2019-09-12 07:52:25 · 979 阅读 · 0 评论 -
Android 8.0系统启动流程_init(一)
本文主要介绍Android系统启动过程中涉及到的init、Zygote、SystemServer和Launcher。文本分析的源码时基于Android8.0源码。1.init1.1init启动前准备init进程是Android系统的第一个进程,其进程号为1,该进程启动后,主要处理一些重要的初始化工作,比如创建Zygote和各种属性服务。在电源按键,按下后,经历如下几个步骤后,便开始引入in...原创 2019-09-01 18:30:38 · 486 阅读 · 0 评论 -
MVC 、MVP 、MVVM的讲解
注:主要参考精通 Android Data Binding,官方文档,感谢分享。在介绍MVVM(Model View viewModel)之前,先简单的介绍一下MVC(Model View Controller)和MVP(Model View presenter)。如果这方便比较了解,可以忽略此部分,直接阅读MVVM相关的内容。一、MVC简介对于MVC我们是比较熟悉,对于原生的Android项目来说原创 2017-02-05 10:37:56 · 325 阅读 · 0 评论 -
MVVM的详细讲解
注:主要参考精通 Android Data Binding,官方文档,感谢分享。一、准备工作要求Android Studio版本是1.5+,使用eclipse的同学暂时还没有办法使用该框架classpath 'com.android.tools.build:gradle:1.5.0'修改对应模块(Module)的 build.gradledataBinding { enabled t原创 2017-02-05 12:04:01 · 565 阅读 · 0 评论