android framework
文章平均质量分 69
rockstore
这个作者很懒,什么都没留下…
展开
-
Android的Handler
Android的Handler上一篇讲了android的handler通信机制,也仅仅是说了他们之间是如何工作的,但是究竟Handler, Looper, MessageQueue是如何运作的呢?今天就来分析下Handler。 构造函数Handler是Framework中一个类,他的具体路径为:android.os.Handler。看他的类定义可以发现,他就是一个普通的public class,使原创 2018-03-06 22:12:53 · 161 阅读 · 0 评论 -
一场Toast引发的血案---WindowManager
在一场Toast引发的血案—Toast的显示中,已经大致了解了Toast的显示过程,但是还是有很多疑惑,Toast最终现实的时候是要通过WindowManager添加到一个Window的,但是这个WindowManager是哪个WindowManager,带着这个疑惑,我们开始深入。可能在此之前对Window不是很了解,但这不影响对WindowManager的理解,只需要大概知道一个Activ...原创 2018-07-07 17:52:19 · 704 阅读 · 0 评论 -
一场Toast引发的血案---Toast的显示
最普通不过的Toast我们进场使用,有没有想过这样的问题,可不可以在显示的时候取消Toast的显示,Toast到底是被添加到哪个Window的,WindowManager是如何添加Toast的,在添加Toast的时候总共有几个WindowManager参与,参与Toast显示的WindowManager是如何产生的……好吧,想到这么多的时候,我感觉头绪有点乱,还是从最简单的开始吧,先看下Toa...原创 2018-07-07 16:06:48 · 2629 阅读 · 2 评论 -
startService启动流程---Service在非App进程且未启动
在 Service启动流程(startService)的最后,分析了在调用startService时可能存在的三种情况,本文分析第三种情况—Service不在App进程且未启动。 Service启动流程(startService)最后已经说明,在这种情况下,系统会执行startProcessLocked函数。startProcessLocked函数是不是很熟悉,在前面分析Activity从La...原创 2018-04-19 21:36:01 · 1304 阅读 · 0 评论 -
startService启动流程---Service在App进程但未启动
在Service启动流程(startService)的最后,分析了在调用startService时可能存在的三种情况,本文分析第二种情况—Service与App在同一个进程,但未启动。 Service启动流程(startService)最后已经说明,在这种情况下,系统会执行realStartServiceLocked函数。 private final void realStartSer...原创 2018-04-19 16:29:03 · 1959 阅读 · 0 评论 -
ActivityThread performLaunchActivity
ActivityThread performLaunchActivity今天就想单独分析下这个函数,理解这个函数对于我们理解Activity的生命周期还是很有帮助的,这个函数真正执行了Activity的创建,并执行了onCreate函数。 新建Activity对象private Activity performLaunchActivity(ActivityClientRecord...原创 2018-04-14 11:11:47 · 1256 阅读 · 0 评论 -
startService启动流程---Service已经启动
在Service启动流程(startService)的最后,分析了在调用startService时可能存在的三种情况,本文分析第一种情况—Service已经启动。 Service启动流程(startService)中已经说明了Service已经启动时会执行函数sendServiceArgsLocked(r, false),接下来我们会分段分析这个函数。private final void...原创 2018-04-19 15:26:10 · 1384 阅读 · 0 评论 -
Service启动流程(startService)
前面分析了Activity的启动流程,下面开始分析Service的启动,本文分析的是startService的流程,android的版本为4.1.2@Overridepublic ComponentName startService(Intent service) { warnIfCallingFromSystemProcess(); return startServiceC...原创 2018-04-19 14:10:04 · 1397 阅读 · 0 评论 -
Activity启动流程总结---通信流程
通信概述Activity启动流程已经看完了,需要好好总结下。前面几篇描述Activity的启动流程是Activity所在应用进程未启动的情况下,直接点击Launcher界面的图标启动Activty的流,系统为android 4.1.2Activity的启动流程中,涉及到的进程有三个,Launcher, 应用进程(下文以App表示)、ActivityManangerService。他们三个进...原创 2018-04-11 22:03:30 · 608 阅读 · 0 评论 -
Activity启动流程(3)
Activity启动流程(2)中详述了从Launcher启动一个应用时,ActivityManangerService进程的第一部分逻辑,这部分逻辑的主要工作总结起来就是解析即将启动的Activty信息,设置Activity Task,设置Launcher的UI逻辑,为即将启动的Activity做准备。本篇的主要内容是理解Launcher的pause过程。 在ctivity启动流程(2),A...原创 2018-04-03 01:09:19 · 188 阅读 · 0 评论 -
resolveActivity解析
resolveActivity是Activity创建过程中非常重要的一个函数,会在ActivityStack的startActivityMayWait中调用。这个函数的主要作用就是根据intent去收集需要启动的activity的信息,看下函数的原型: ActivityInfo resolveActivity(Intent intent, String resolvedType, bo...原创 2018-03-27 18:55:01 · 11727 阅读 · 0 评论 -
Activity启动流程(4)
在Activity启动流程(3)中,Launcher已经执行了onPause方法,并告知了ActivityManagerService,本篇就分析下ActivityManagerService收到Launcher的通知后会执行的操作。 ActivityManagerService类activityPausedpublic final void activityPaused(IBind...原创 2018-04-09 01:26:17 · 333 阅读 · 0 评论 -
Activity的启动过程(2)
在Activity启动流程(1)中,Activity的启动经过binder通信就会进入ActivityManagerService所在的进程中继续执行startActivity方法,由于后续的方法涉及的逻辑比较多,在后面的分析中我可能会把某一个函数单独拿出来分析,最后我会做一个启动流程的总结。 ok,接下来看下startActivity的实现: ActivityManangerServ...原创 2018-03-29 21:15:46 · 391 阅读 · 1 评论 -
android SharedPreference的实现(2)
从SharedPreference中获取值以及从Editor中设置值已经在SharedPreferences的具体实现(1)中具体说明,这节的主要目的就是理解SharedPreference的commit过程。 代码1:public boolean commit() { MemoryCommitResult mcr = commitToMemory(); Shar原创 2018-03-13 22:17:08 · 213 阅读 · 0 评论 -
android SharedPreference的实现(1)
一直在用SharedPreferences进行数据缓存,也知道SharedPreferences使用xml文件保存缓存信息,但背后究竟是如何实现的?跟着源码一看究竟。 通常,我们在context.getSharedPreferences获得SharedPreferences,然后使用get方法根据键值获得值,使用SharedPreferences.edit获得Editor,向SharedPr...原创 2018-03-13 22:12:23 · 334 阅读 · 0 评论 -
Activity的启动流程(1)
一直在使用Activity,今天开始就来看下这个Activity究竟是如何启动的。 Activity分为根Activity和应用内Activity,根Activity就是我们点击手机屏幕上的icon时启动的Activity,应用内Activity就是我们应用内部跳转的Activity。今天我们从根Activity开始分析它的启动流程。 点击手机屏幕上的icon,其实就是android的Laun...原创 2018-03-17 02:04:04 · 216 阅读 · 0 评论 -
System.loadLibrary分析
System.loadLibrary在加载so库的时候,我们最常用的就是loadLibrary()这个函数,我们也知道load()传递的是so文件的绝对路径,但是loadLibrary是如何找到so的呢,今天就去看下这后面发生了什么。 public static void loadLibrary(String libname) { Runtime.getRuntime().loadLibr原创 2018-03-08 21:40:45 · 4304 阅读 · 1 评论 -
ArraySet 添加和删除元素分析
一直在使用Set相关类进行运行时数据存储,之前也有知道Android为了更加有效的利用内存,在23的时候设计了自己的一套运行时的集合类。本文的以我的视角分析ArraySet的add和remove过程,并做了简单的对比分析。##结构```ArraySet```实现了```Set```和```Collections```接口,故```add```和```remove```接口的使用方式相同,就...原创 2018-10-15 10:44:15 · 11683 阅读 · 0 评论