基于使用的Android源码分析
从使用的角度去看源码,脚踏实地地征服源码
键盘舞者113
你的star就是我的动力,https://github.com/979451341
展开
-
Dialog源码解析
1.构造函数 Dialog(@NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { mContext = context; //获取WindowManager为后续操作做准备 mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW.原创 2021-06-02 10:51:22 · 782 阅读 · 0 评论 -
CountDownTimer源码解析
CountDownTimer适用于做倒计时,时间间隔一样的任务,比如5秒上传一次经纬度,这次我们看看它的源码。1.初始化 countDownTimer = object : CountDownTimer(Long.MAX_VALUE, 1000) { override fun onFinish() {} override fun onTick(millisUntilFinished: Long) {原创 2021-03-24 14:46:59 · 1060 阅读 · 0 评论 -
LiveData 机制详解
一.粘性消息机制首先展示一个最简单能体现粘性消息的例子原创 2020-08-06 11:28:45 · 2086 阅读 · 0 评论 -
PopupWindow的源码解析
PopupWindow还是很常用的,所以为了更好的使用这个控件,今天看看PopupWindow的源码,把其中的原理理一理 1.首先看看构造函数PopupWindow的构造函数和一些系统控件一样,一层套一层,最后调用的是这个函数public PopupWindow(Context context, AttributeSet attrs, int defStyleAttr, int ...原创 2018-07-27 17:46:45 · 2005 阅读 · 1 评论 -
LocalBroadcastManager的使用和源码解析
LocalBroadcastManager能够让自己发送的广播不被外部App接收,这样既安全,也又优化了性能,因为传送和接收广播也是跨进程通信。而通过LocalBroadcastManager发送广播和该BroadcastReceiver接收广播都是在自己应用的进程完成的。接下来我会先简单的说LocalBroadcastManager如何使用,然后在使用的基础上从源码角度讲解这是如何实现的。1.使...原创 2018-05-25 16:16:14 · 1245 阅读 · 0 评论 -
Handler使用详情与源码解析
Handler作为Android两大通讯系统之一的消息机制,另一个是Binder机制(可以看看这篇博客来了解https://blog.csdn.net/z979451341/article/details/68941459),我们这一次首先说说Handler在各种情况的使用,然后再从Java代码方面来进行源码解析一.概念Looper:一个线程只能有一个,通过Looper.myLoope...原创 2017-03-26 10:59:17 · 1692 阅读 · 0 评论 -
HandlerThread的使用和源码解析
先说说HandlerThread有啥作用,主要作用就是它能够提供Looper,把这个Looper给Handler初始化的时候使用,使得Handler处理消息的时候线程处于HandlerThread创建的线程public class MainActivity extends AppCompatActivity { private HandlerThread myHandlerThr...原创 2017-03-25 12:03:28 · 1486 阅读 · 0 评论 -
Android IntentService的使用详情和源码解析
IntentService是一个Service的子类,但是他和一般的Service不一样,它能够异步执行耗时任务,也就是他自己会开启子线程,并且任务执行完会自动执行onDestroy。从源码来看,是基于Handler和Service来实现的。1.使用详情首先我贴出一个简单的例子,看看IntentService具体运行过程public class MyIntentService ...原创 2017-03-25 16:51:24 · 1449 阅读 · 0 评论 -
Binder的使用方法和源码解析
1.BInder驱动机制说明首先Binder是用于进程间通讯,这个我们都知道,但是它是基于Binder驱动来完成进程间通讯的。Binder驱动是一个驱动程序,而这个驱动程序存在于Linux内核层,Linux内核层又可以说是操作系统层,是进程的管理者。一个进程A要调用进程B的一个方法,这个进程A就需要获取进程B的Binder代理对象,这个BInder代理对象就是进程B的BInder本地对象。...原创 2017-04-01 10:01:59 · 2681 阅读 · 0 评论 -
Android SQLite多线程读写和线程同步源码分析
没啥诀窍,只需保证几个线程都是用的一个SQLiteDataBase对象就行了。如果我们非要在不同线程中用两个或更多的SQLiteDataBase对象呢,当然这些SQLiteDataBase对象所操作的是同一个数据库,也就是同一个db文件,这个就是这篇博客的重点了(ps:使用到的代码将在博文结尾贴出)第一种情况:一个SQLiteDataBase对象不同线程两个子线程执行修改数据库操作,三个子线程执行...原创 2018-03-17 16:56:22 · 5557 阅读 · 1 评论 -
ThreadLocal使用方法与源码解析
1.ThreadLocal的使用方法ThreadLocal能够存储数据,作用域是线程。首先我示范一些下这个ThreadLocal如何使用,并分析一下使用的结果,让我们能够更加清晰的理解ThreadLocal作用域为线程这个特点,方便后面源码解析。我在Activity里创建一个静态的ThreadLocal类,并且创建了三个线程,这个三个线程通过点击按钮来触发执行。这里要注意我已经赋值ThreadLo...原创 2018-03-26 14:24:55 · 2008 阅读 · 0 评论 -
Fragment生命周期情景分析和源码分析
onAttach():Fragment和Activity相关联时调用。可以通过该方法获取Activity引用,还可以通过getArguments()获取参数。onCreate():Fragment被创建时调用。onCreateView():创建Fragment的布局。onActivityCreated():当Activity完成onCreate()时调用。onStart():当Fragment可见...原创 2018-04-10 11:28:26 · 1896 阅读 · 0 评论