Android踩坑之路
文章平均质量分 90
我挥舞着键盘和本子,发誓要把世界写个明明白白。
yinhuanxu
有梦想,爱学习
展开
-
Android Service的绑定过程
通常我们使用Service都要和它通信,当想要与Service通信的时候,那么Service要处于绑定状态的。然后客户端可以拿到一个Binder与服务端进行通信,这个过程是很自然的。那你真的了解过Service的绑定过程吗?为什么可以是Binder和Service通信?原创 2016-10-18 10:10:07 · 4311 阅读 · 2 评论 -
Android View的绘制流程三部曲
如果我们用面向对象的思维方式来思考,就会觉的View的绘制机制是很合理,很科学的。我们要在一张纸上画一幅画,首先我们要测量一下这幅画有多大吧,然后确定在纸的哪个地方画会显得比较美观,最后才是用画笔工具将画绘制在纸上。 在Android中也是一样的。View的绘制流程主要是指measure,layout,draw这三步,即测量,布局,绘制。首先是要测量View的宽高,然后布局确定在父容器中的位置坐标,最后才是绘制原创 2016-10-24 00:28:29 · 5033 阅读 · 1 评论 -
Android Service的启动过程
刚开始学习Service的时候以为它是一个线程的封装,也可以执行耗时操作。其实不然,Service是运行在主线程的。直接执行耗时操作是会阻塞主线程的。长时间就直接ANR了。我们知道Service可以执行一些后台任务,是后台任务不是耗时的任务,后台和耗时是有区别的喔。 这样就很容易想到音乐播放器,天气预报这些应用是要用到Service的。当然如果要在Service中执行耗时操作的话,开个线程就可以了原创 2016-10-14 21:26:56 · 5047 阅读 · 2 评论 -
Android Context getSystemService分析
当我们希望获取到系统服务时,可以调用Context的getSystemService方法,那么getSystemService又是怎么工作的呢?Activity是一个Context,他调用getSystemService时,会调用到Context的包装类ContextWrapper的getSystemService方法,ContextWrapper又会委托ContextImpl去实现具体逻辑原创 2016-10-11 17:08:16 · 13747 阅读 · 0 评论 -
Android Activity的启动过程
ActivityThread的main()方法究竟做了什么工作?main方法代码并不长,但行行珠玑。我也打开源码去看了main方法,之后还鼠标滑滑滑大致看了ActivityThread,发现了performLaunchActivity方法,这个方法分明就是用来启动Activity的,从源码的角度来分析Activity启动过程原创 2016-10-07 21:36:06 · 3620 阅读 · 2 评论 -
Android中子线程真的不能更新UI吗?
Android的UI访问是没有加锁的,这样在多个线程访问UI是不安全的。所以Android中规定只能在UI线程中访问UI。但是有没有极端的情况?使得我们在子线程中访问UI也可以使程序跑起来呢?原创 2016-10-03 17:58:44 · 18442 阅读 · 45 评论 -
Android View的事件分发机制
准备了一阵子,一直想写一篇事件分发的文章总结一下,这个知识点实在是太重要了。当一个点击事件(MotionEvent)产生后,事件最先传递给当前的界面(Activity),这点很好理解的。 Activity再将事件传递给窗口(Window),然后Window将事件传递给顶级View(DecorView)。此时,事件已经到达了View了。之后顶级View就会按照事件分发机制去分发事件原创 2016-10-01 12:48:30 · 4516 阅读 · 0 评论 -
ListView中的观察者模式
虽然现在RecyclerView很好用,也在逐渐替代ListView。Github 上也很多实用的封装。但是这些都不阻碍我们学习ListView优秀的源码设计。原创 2016-09-14 10:15:21 · 4067 阅读 · 6 评论 -
Android中的消息机制
最近写博客的时间,都是在晚上图书馆学习回到宿舍后,大概是11点半开始写,写着写着就1点多了,这还是我积累的比较充分了的情况下的,然后自己要看一遍再睡觉。第二天早上还要审稿后再发表。下星期开始调整写作时间,早睡早起学习效率才高。写一篇文章真的不容易,我会陆续写一个路线的博客,如事件分发机制,自定义View,View的绘制机制和加载过程,Activity的加载过程等等 。原创 2016-09-16 11:58:58 · 3860 阅读 · 0 评论 -
Android AsyncTask工作原理
AsyncTask能够适当简单的使用在UI线程,在没有任务线程和handler的情况下,这个类也允许执行后台操作并将结果显示在UI线程上原创 2016-09-21 10:28:06 · 3777 阅读 · 2 评论 -
Android中的线程池(二)
上一篇博客Android中的线程池(一),简单分析了线程池的内部工作的过程,有兴趣的同学可以去阅读下。那真的是简单分析,因为在那篇文章里,只从一个任务从提交到被执行的过程简单分析。事实上线程池的内部实现原理是挺复杂的原创 2016-09-20 13:52:28 · 1509 阅读 · 0 评论 -
Android中的线程池(一)
一直想写关于AsyncTask的实现原理,AsyncTask的实现是用到了线程池和消息机制的,关于Android中的消息机制我已经在博客里写过了,有兴趣的同学可以去阅读。 那这篇博客就一起来学习Android中的线程池。原创 2016-09-18 12:56:56 · 1766 阅读 · 0 评论