Android_frameworks
文章平均质量分 97
小文21
小文在学习,
毕业早期进入移动操作系统公司从事Android App,framework方面工作,
后来到加入自动驾驶公司从事AVM(360环视影像),APA(自动泊车)开发,
目前在一家国产芯片公司从事图像驱动方面的工作
展开
-
Android_动态广播源码分析
追一追动态广播的源码 恩恩。今天我们追一追动态广播的源码,看看我们平时使用的动态广播是怎样实现的:(现在网上资料一大堆,其他内容就不多赘述,主要从源码层面来分析);动态广播的注册:【注册广播的一方为接受广播的一方】registerReceiver( receiver,filter);一般情况下动态广播需要在代码里面注册,而注册的代码就是上面的一行,这段代码...原创 2020-06-04 18:55:32 · 360 阅读 · 0 评论 -
AndroidP_应用进程启动流程的梳理
前言本来是要将之前Activity冷启动流程继续梳理清楚的,到了中间看到当进程尚未启动还需要启动新的进程,这也是需要梳理清楚的,于是就先将进程启动流程在源码层面给梳理一遍.流程图先上图,有个概况了解才能有梳理的方向:源码建议在进入源码阅读之前,先将上面的流程图大概的进行两遍左右的阅读,然后相信会对下面的源码梳理的理解有很大的帮助:1. AMS.startProcess我们在开发中中应该知道,应用进程的管理通常是由AMS来进行的,但是进程的启动也是由AMS来发起的【虽然是AMS发起的,但是创建原创 2020-06-04 18:45:03 · 588 阅读 · 0 评论 -
AndroidP_Zygote进程源码梳理从认识到理解
前言还是来看看,Zygote进程吧,这个和日常开发的关系还是很紧密的,我们今天对它的创建,启动和工作的方面对Zygote进程来梳理一下:怎么理解Zygotezygote,硬翻过来是受精卵的意思, 我们先大概的认识下:zygote进程是由init进程创建的;init管理zygote的生命周期;系统中大部分应用进程是从zygote直接或者间接创建的;zygote进程在Android系统的全生命周期都是存活的,守护并管理这他的子孙;基于上面的总体映像.我们到到代码中去看看:代码梳理1. 程序原创 2020-06-04 18:41:56 · 212 阅读 · 0 评论 -
Android_MediaScanner源码梳理
MediaScanner我们的手机或者原创 2020-04-26 14:36:29 · 439 阅读 · 0 评论 -
Android_IdleHandler
听到公司前辈在电话面试时给别人提了个问题:“你了解IdleHandler吗?”噫,噫,噫。我之前梳理过Handler的运行流程,没注意这个IdleHandler!!!潜意识中我感觉这个还是应该要去了解一下的;那我们今天就与源码中看看这个IdleHandler。/frameworks/base/core/java/android/os/MessageQueue.java /** ...原创 2019-12-12 17:19:27 · 275 阅读 · 0 评论 -
Android_onTouch onTouchEvent 与 onClick的区别和先后调用关系
我们会经常在代码中看到触屏事件的处理,有时候使用onTouch,有时候使用了onTouchEvent,还有的时候使用了onClick,那么我们有没有对这三个方法进行过思考:三者有什么区别呢?要是三者都在代码中出现,应该是怎样的调用关系呢?首先,我先把结论给出来:onTouch, onTouchEvent, onClick,三个方法的调用顺序是:onTouch ----> o...原创 2019-12-12 12:01:04 · 1545 阅读 · 0 评论 -
Android_UI_update(子线程更新UI的原理和源码梳理)
我们之前在Android_UIthread(UI线程原理以及和主线程的关系)中知道,UI在主线程中创建,只有主线程才能跟新UI。但是我们在实际中会经常在工作线程来更新UI,一般情况下,除了主线程,其他的线程是不可以更新UI的,此时我们就会使用到一些方法。说明Android系统中,一般情况下,不管我们在非主线程中采取哪种方式来更新UI,最后都会是在进程的主线程中来更新UI的,如果我们感觉方法的...原创 2019-12-11 15:11:29 · 486 阅读 · 0 评论 -
Android_UIthread(UI线程原理以及和主线程的关系)
originally added here at android.view.ViewRootImpl.<init>(ViewRootImpl.java:511) at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:346) at android.view.WindowManag...原创 2019-12-06 03:46:04 · 3692 阅读 · 0 评论 -
Android_IntentService源码梳理
IntentService是Android提供和的一个抽象类.按需处理异步请求,客户端发送请求通过startService(intent)调用,这个服务根据需要被启动,使用工作线程来处理每个Intent,并在处理完任务后停止自身.以上就是google对IntentService的简短介绍【我翻译的】.那我们今天就从源码的角度对IntentService进行梳理:首先我们已知IntentSe...原创 2019-11-28 17:13:28 · 189 阅读 · 0 评论 -
Android_HandlerThread 源码梳理
Android 多线程还有HandleThread,看名字就可以能感觉到得到,会是handler和Thread的综合使用。那到底什么怎么样的呢,就跟随Android的源码来看看他的工作原理是什么样的。我们先看看他的类注解:先看看官方对他的介绍:【Handyclassforstartinganewthreadthathasalooper.Theloopercanth...原创 2019-11-27 17:08:04 · 216 阅读 · 0 评论 -
Android_AsyncTask源码梳理
Android中的多线程操作是比比皆是,之前有对线程间通信方式的Handler进行源码梳理,今天就对AsyncTask的工作原理进行源码分析:准备AsyncTask背后的实现原理也是基于Handler和Thread的,只不过Android给我们做了很好的封装,我们可以直接拿来使用.首先,我们都知道AsyncTask有三个主要的泛型参数:Params : 在执行AsyncTask时下...原创 2019-11-25 15:24:01 · 166 阅读 · 0 评论 -
Android_ThreadLoacl原理
先看看google的定义对ThreadLocal 有个大概了解,再进行源码的梳理:This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via itsgetorsetm...原创 2019-11-20 20:21:08 · 135 阅读 · 0 评论 -
Android 的Handler工作流程梳理
之前在子线程和主线程创建使用Handler不同处的源码分析时,追了一下应用创建和使用Handler的相关源码。发现了在线程中使用Handler,最后就会进入loop循环,子线程要手动退出,主线程是不死就不退出;同时也和另一个问题相遇了:那就是应用的主线程最后也都在loop里没出来【activityThread的Main方法最后执行了Looper.loop()】为什么不会导致应用发生ANR呢?.今天...原创 2019-10-30 19:58:39 · 312 阅读 · 0 评论 -
子线程和主线程创建使用Handler不同处的源码分析
子线程的Handler在使用handler时,会有在子线程创建handler的场景,那我们从Looper.java的源码中摘抄下面一段创建Hander的代码段: class LooperThread extends Thread { public Handler mHandler; public void run() { Looper.prepare...原创 2019-10-29 19:22:35 · 738 阅读 · 0 评论 -
Activity setContentView主要流程
我们一般在写一个Activity的时候都会有在onCreate()方法中看到这么一个方法:setContentView(),今天就以setContentView()方法开始看看这经常出现的代码端是干什么的:1setContentView@Overrideprotected void onCreate(Bundle savedInstanceState) { ... ...原创 2019-10-27 23:29:34 · 221 阅读 · 0 评论 -
Android_SystemServer启动代码梳理
预备知识:SystemServer是在Zygote进程中启动的;上代码: if (startSystemServer) { Runnable r = forkSystemServer(abiList, socketName, zygoteServer); // {@code r == null} ...原创 2019-10-07 20:49:27 · 154 阅读 · 0 评论