- 博客(286)
- 收藏
- 关注
原创 ART探险(1) - oatdump看到的世界
自从4.4加入Android大家庭,到5.0被正式扶正,ART对Android世界的影响越来越大。这么好玩儿的东西,我们当然要进去探险一番,看看这其中有哪些有趣的事情。
2016-07-20 19:59:10 6139 3
原创 用Go语言写Android应用 (2) - 从Android的Java调用Go代码
激动人心的时刻到了,从这一刻开始,我们可以通过Android的Java来调用go写的代码了!
2016-07-12 15:50:56 10641
原创 用Go语言写Android应用 (1) - 用Go写本地应用
如何用Go语言写跨平台的用于手机上的应用,我们以Android为例分析本地应用的写法。
2016-07-10 00:16:57 18084 3
原创 Android中杀进程的几种方法 (1) - killBackgroundProcesses
killBackgroundProcessesActivityManager中提供了几种方式来杀进程,比如有forceStopPackage、removeTask、killBackgroundProcesses等。 下面我们就来看看它们的背后都做了些什么。
2016-07-08 18:25:49 24743
原创 说说Android的广播(1) - 普通广播,有序广播和粘性广播
对于Activity的启动流程,我们已经有了几个版本的分析了。这里我们分析一个更容易一些的,四大组件中最简单的Broadcast Receiver。关于Broadcast,有几点需要了解。首先是广播的类型,然后是广播的发送方法,最后是广播是如何被接收的。这三者相辅相承的,比如普通广播和有序广播只有在详细了解了广播的接收过程了之后,才能真正明白它的含义。
2016-06-08 16:45:12 6453 2
原创 说说Android的广播(4) - 前台广播为什么比后台广播快?
其实,这种前台广播的设计,就是为了加速广播的性能而设计的。二者在设计思想上就有不同。根据应用层实际的需求,决定使用前台广播还是后台广播,本来就是应用设计时候应该考虑的问题。
2016-06-08 16:39:45 9001 3
原创 说说Android的广播(3) - 什么样的广播是并发的?
什么样的广播是并发的?现在让我们开始破解Android中的一个trick,普通广播都是并发的吗? 带着这个问题,我们来看ActivityManagerService.broadcastIntentLocked中的实现逻辑。
2016-06-07 16:56:10 1841 1
原创 说说Android的广播(2) - 并发队列和串行队列
并发队列和串行队列前面我们讲了,消息分为普通消息和有序消息两大类。普通消息是可以并发的,由于是并发的,这些广播的处理者之间互相是不依赖的。另外,并发队列和串行队列都各维护了一条后台广播队列和前台广播队列。如果这个消息足够重要,想走快速通道的话,可以选择使用前台广播队列。对于并发队列,如果是进程活着,动态注册到队列里的,系统会通过并发的方式迅速将消息广播出去,就跟大家所想象的一样。
2016-06-06 19:14:17 4789
原创 用代码画流程图和时序图快餐教程(3) - PlantUML画时序图
用描述性的语言来写UML,尤其是Sequence Diagram,PlantUML应该是很多同学的首选了吧。
2016-06-02 18:33:10 8063
原创 用代码画流程图和时序图快餐教程(2) - mermaid数据流图速成
mermaid的好处是可以在写markdown文档的同时,就直接可以画图了。
2016-06-02 16:43:55 9626
原创 C++多任务编程简明教程 (1) - C++的多任务其实很简单
与很多同学交流的时候发现,一想到用C++写多线程,还是想到pthread这样的库的方法实现。但是,十几年前的研究就证明了,线程安全是无法用库的形式来提供的.所以,至少对于多线程编程来讲,C++11是必须要学习的。我们不能再停留在C++98/03的老黄历上了!所幸的是,对于最基本的C++11多任务编程来讲,比起完整学会pthread这样的库还要容易.
2016-05-23 21:45:19 3619
原创 我们也说说Android.mk(4) - 计算怎么办?
前面我们把Makefile做为一门语言的主要特性大致做了一个描述。但是,我们在实际的Android.mk当中还是会发现有很多事情光用Makefile的字符串替换搞不定啊,这可如何是好?其实,这就是我们在第一讲的最开始就讲shell函数的原因,因为这要靠shell脚本来解决了。
2016-04-13 11:30:43 861
原创 在MTK芯片上如何控制CPU的核数和频率-MTK PerfService
在MTK芯片上如何控制CPU的核数和频率-一句话:PerfService就是用来调整CPU/GPU资源的。对于老的API,可以更简单地讲就是调CPU核数和CPU频率的。
2016-04-11 17:58:07 13566 2
原创 我们也说说Android.mk(3) - 宏
传统上我们一直称这种东西为makefile中的变量,其实本质上就是一个宏,只是做的是字符串替换。我们何如就把它叫做宏呢。
2016-03-30 18:46:35 2254
原创 我们也说说Android.mk(2) - 函数进阶教程 - 分支、循环、子程序
按照面向过程程序设计的标准流程,我们讲完了顺序结构,就要讲分支、循环和子程序。下面我们就开始讲用于分支、循环和子程序调用功能的函数。
2016-03-30 15:47:01 2298
原创 我们也说说Android.mk(1) - 从函数说起
大家都习惯看从头,从构建目标讲起的,导致每篇文档熟的都是前面的部分。很多教程也都是想办法能够观其大略,从整体上给大家一个思路。比如《深入理解Android内核设计思想》的第4章,比如《Android内核剖析》的第18章,比如《深入解析Android 5.0系统》的第2章。于是我打算反其道而行之,先从调用函数开始讲。
2016-03-29 17:59:13 1579
原创 细说dex2oat(1)
dex2oat是将dex字节码编译成oat格式的可执行文件的工具,我们先从命令行参数,和makefile调用它的时候所给的参数开始了解它吧
2016-03-24 18:32:31 4357
原创 patchoat相关代码在Android M版中的变化(1)
在Android M中,PMS也是有变化的,比如原来一些用c语言写的变成c++写的了。我们先从被取消掉的patchoat命令的直接调用说起,一起看看都有些什么变化。
2016-03-19 18:37:25 1779
原创 Android 6.0 fork Zygote时的存储权限管理
Android 6.0开始支持运行时权限管理的功能。运行时权限管量中当然也包括对READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE这两个权限的动态管理。系统需要提供在不杀掉或重启已经运行的应用的情况下去动态授权的机制。这篇文章就是讲在Zygote fork的时刻,我们为每个运行的应用创建一个命名空间,然后将其绑定到一个View中作为初始的View的过程。
2016-02-24 17:37:38 2140
原创 Node.js编程快餐(1) - 按行读取文本文件
Node.js与其它语言一样,提供了对文本文件按照行来读的功能。不过与Ruby,Python等语言不同,Node.js的File System对象并不提供迭代访问功能。 需要借助readline模块来实现此功能。
2016-02-23 01:12:22 3435 3
原创 Android Layout Inflate分析(3) - 深入Layout XML属性
inflate分析第3章,分析如何用XmlPullParser从XML中读取属性,以及如何从编译好资源XML中读取属性和资源的值。
2016-02-17 19:42:33 1230
原创 Java多线程编程简明教程(2) - ForkJoin模式
Fork-Join模式说起Fork-Join模式,我们不免联想起了Map-Reduce.它们的原理都是分治法,就是将一个大问题划分成若干个小问题,如果这些小问题之间互相不影响的话,就可以并发去执行. 最后,统一将各小问题的结果汇总起来,就是这个大问题的结果. Future实现了从单任务到多任务的转变,而Fork-Join模式是一种充分利用多核的模式。
2016-02-16 11:40:25 988
原创 跟随Android进入ARM v8a的世界(1) - 从例子说起
目前我们在Android上运行的ARM芯片,有6套指令集,32位的ARM v5指令集,16位的thumb指令集,32位的ARM v7a指令集,16位和32位混合的thumb2指令集,32位的ARM v7a带Neon的指令集,还有64位的ARM v8a指令集。 本文开始系统讲述ARM v8a指令集
2016-02-15 12:20:21 1696
原创 Java多线程编程简明教程(1) - Future模式与AsyncTask
关于多线程编程的教程汗牛充栋了,专门讲Java并发开发的书籍也是相当丰富了。我们举个例子,典型的一本Java多线程开发的教材是这样写的,上来就是介绍如何创建线程,然后再讲线程安全,线程之间如何做同步和通信,接着才是线程池和执行器,最后是线程安全的数据结构。这样写当然从技术上讲是没问题的,不过问题在于,门槛太高了。有没有简单一点的入门方式呢?
2016-02-15 11:22:17 1385
原创 Android Layout inflate分析(2) - ViewGroup
inflate系列第2章出炉,工具已经齐备,下面开始介绍材料。首先我们从ViewGroup中的LayoutParams开始打牢基础,这是个只有宽和高两个参数的简单类,通过它我们把TypedArray,Theme之类的概念搞清楚,为将来进入更复杂的布局做准备。
2016-02-03 13:17:06 1154
原创 关于Android的浅杀
android.app.ActivityManager类提供了removeTask方法来清理任务。 在API21及之前,removeTask中提供一个参数来指定是否要连同任务所运行的进程一起杀掉。 这个方法的第二个参数就是用来指定是否要连同进程一起杀掉,可以为0或者REMOVE_TASK_KILL_PROCESS。
2016-01-28 21:01:12 2017
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人