2017-01-19 Piasy
View 树的绘图流程 当 Activity 接收到焦点的时候,它会被请求绘制布局,该请求由 framework 处理。 整个 View 树的绘图流程在ViewRoot.java类的performTraversals()函数展开,该函数所做 的工作可简单概况为是否需要重新计算视图大小(measure)、是否需要重新安置视图的位置(layout)、以及是否需要重绘(draw),流程图如下: 继续阅读 »
2016-08-29 Piasy
在拆轮子系列:拆 Okio{:target="_blank"} 最后我曾说过会对 Retrofit、OkHttp、Okio 三者进行一个小结,并且整理一套网络层的“微架构”,今天终于得以完成,在这里一起奉送给大家 :) 继续阅读 »
2017-02-12 Piasy
Activity Activity 是和用户交互的入口,几乎用户所有的交互操作都发生在 Activity 中,只有一个例外:通知栏,notification area (bar) 和 notification drawer 都由系统控制(SystemUI,一系列有界面的 Service,除了状态栏,还包括虚拟按键、最近任务、壁纸等,更多内容可以阅读《深入理解Android 卷III》)。桌面组件(widget)也是被 launcher 利用,显示在 launcher 的 Activity 中。 继续阅读 »
2015-11-16 Piasy
今天开发的过程中偶遇一个系统的bug:响应通知栏消息,启动一个新的Activity,之前代码写得有问题,为intent设置了Intent.FLAG_ACTIVITY_CLEAR_TASK这个flag,删除这行代码重新安装之后,竟然发现修改不起作用,启动Activity的行为依然是清除了之前所有的Activity,疑惑之余,对这个问题进行了进一步的测试,总结成此文。 继续阅读 »
2016-05-06 Piasy
前些日子在 Android Weekly{:target="blank"} 上看到了一篇介绍 SqlDelight 使用{:target="_blank"}的文章,虽然之前了解过 SqlDelight{:target="_blank"} 和 SqlBrite{:target="_blank"},但却一直没有尝试过。但这次我被文章中的例子惊艳到了,而且 SqlDelight 还能和 AutoValue{:target="_blank"} 兼容使用,进一步打消了我的顾虑,我就赶紧在 AndroidTDDBootStrap{:target="_blank"} 项目进行了尝试,并且甩掉了之前使用的 StorIO{:target="_blan 继续阅读 »
2016-09-04 Piasy
在拆轮子系列:拆 Okio{:target="_blank"} 最后我曾说过会对 Retrofit、OkHttp、Okio 三者进行一个小结,并且整理一套网络层的“微架构”,今天终于得以完成,在这里一起奉送给大家 :) 继续阅读 »
2016-09-04 Piasy
在拆轮子系列:拆 Okio{:target="_blank"} 最后我曾说过会对 Retrofit、OkHttp、Okio 三者进行一个小结,并且整理一套网络层的“微架构”,今天终于得以完成,在这里一起奉送给大家 :) 继续阅读 »
2017-10-06 Piasy
我在去年六月份学习了 OpenGL 的一些基本概念,整理了一个 demo 和两篇文章,并在今年六月份复习修正了一番。不久前我进一步向铁蕾兄学习了四种常用 2D 纹理变换的实现思路(以及本文中的其他总结性文字),由于铁蕾兄实在太忙,无暇快速整理成文,因此我就在这里为他代笔了 :) 继续阅读 »
2017-01-15 Piasy
Activity 的销毁与重建有两种情况:App 处在后台,由于内存紧张而被杀死,当用户回到 我们的 App 时,被杀掉的 Activity 会被重新创建;当手机配置发生变化时,例如旋转屏幕方向,Activity 会被重新创建。 当 Activity 被销毁时,在第一种情况中,它加载的 Fragment 显然也要被销毁,因为此时通常整个 App 都被杀死了,但第二种情况中,我们可以通过设置 Fragment 的 setRetainInstance 来避免 Fragment 被重新创建,但相应的,我们在加载 Fragment 的时候,就需要检查 Fragment 是否已经加载(利用 FragmentManager 进行查找),以免重 继续阅读 »
2017-02-12 Piasy
基本概念 所有 Touch 事件都被封装成了 MotionEvent 对象,包括 Touch 的位置、时间、历史记录以及第几个手指(多点触控)等; 事件有很多类型,ACTION_DOWN,ACTION_UP,ACTION_MOVE 等; 对事件的处理包括三类:传递,dispatchTouchEvent();拦截,onInterceptTouchEvent();消费,onTouchEvent() OnTouchListener; 继续阅读 »