当 JVM 创建对象遇到内存不足的时候,JVM 会自动触发垃圾回收(Garbage Collection,简称 GC)操作,将那些不再使用但仍然存在内存中的对象当成垃圾清理掉,释放出被占用的内存空间,供新创建的对象使用。
Android 6.0 运行时权限浅析
关于 Android 的权限是一直都存在的,6.0 之后做的改变其实是为了更好的保护用户的个人信息安全。
最直观的就是以前安装应用的时候会显示这个应用需要用到所有的权限,如果不想应用拥有某个权限,唯一的做法就是放弃该应用。现在不一样了,现在是先不管应用需要哪些权限,安装了再说,等要用到某些功能时应用才提示要申请权限,当然也是可以拒绝的,大不了不用这个功能而已,但是其他的功能还是照样可以用的啊。
接下来就简单的介绍一下关于 6.0 运行时权限的使用以及一些注意事项。
如何实现 Bitmap 的高效加载?
Bitmap 在 Android 中指的是一张图片,可以是 png 格式,也可以是 jpg 等其他常见的图片格式。如何加载一个 Bitmap 呢?
BitmapFactory 类提供了四种解析方法:decodeFile()、decodeResource()、decodeStream() 和 decodeByteArray(),分别用于从文件系统、资源、输入流和字节数组中加载出一个 Bitmap 对象,其中 decodeFile() 和 decodeResource() 又间接调用了 decodeStream() 方法。
Android 多线程的各种实现方式解析
线程在 Android 中是一个比较重要的概念,由于 Android 的特性,如果在主线程中执行耗时操作就会导致程序无法及时的响应,因此耗时操作必须放在子线程中去执行。
提到多线程必然会想起 Handler,前面写了一篇关于 Handler 的总结:学习总结 – Android 消息机制各个击破,另外还有郭婶的 Android异步消息处理机制完全解析,带你从源码的角度彻底理解。
下面开始介绍 Android 多线程中一些比较重要的实现方式。
学习总结 -- Android 中的线程池基本介绍
首先概括一下线程池的好处:
- 重用线程池中的线程,避免因为线程的创建和销毁带来的性能开销;
- 能有效控制线程池的最大并发数,避免大量的线程之间因互相抢占系统资源而导致的阻塞现象;
- 能够对线程进行简单的管理,并提供定时执行以及指定间隔循环执行等功能。
Android 中的线程池来源于 Java 的 Executor,Executor 是个接口,真正的实现是 ThreadPoolExecutor。ThreadPoolExecutor 提供了一系列的参数来配置线程池,从而创建不同的线程池。
学习总结 -- Android 消息机制各个击破
提到消息机制大家都不陌生,因为在日常开发中少不了和它打交道,郭婶也有过相关的篇章来讲述:Android异步消息处理机制完全解析,带你从源码的角度彻底理解,看完不禁感叹写得很棒很适用。说实话,郭婶这篇文章看了不下 3 遍,甚至还打印出来认真仔细研究,每次都会随笔记点东西,但都是零零散散的,这次结合《Android 开发艺术探索》来记录自己的学习过程。
学习总结-- View 的工作流程
对于新手来说,自定义 View 无疑是一重点难点(自己也还是菜鸟),之前也尝试过一些自定义 View,虽然效果大概是那么回事,但是还是有很大的局限性,特别是现在回过头去看看,有些细节方面处理得并不够。因为一开始对 View 的认识并不够,缺乏根本上的认识。所以这次的总结分为 4 个点,都是在自定义 View 时需要注意并且自定义一个好的 View 不可或缺的知识点。
学习总结 -- View 事件分发机制和滑动冲突
终于到了 View 这一关卡了,之前也有实践过自定义 View:圆弧刻度温度进度条,但是对于 View 底层的东西没什么了解,只是会用而已,抱着“知其然知其所以然”的心态,很多时候都会先去尝试使用,然后才来究其原因。这次会分两个部分来叙述本篇:事件分发机制、滑动冲突;自己本身对源码也不熟悉,所以本篇主要是理论概述,尽量不出现源码的东西。
学习总结-- Android 多进程和 6 种 IPC 方式
之前对于 IPC 机制真的是完全懵逼啊,根本就不知道 IPC 是个什么东西,通过这些天的学习算是有了一定的了解,但也仅限于使用方式,对于原理的东西还是很懵逼的,所以先来个 IPC 方式的总结(对原理还没有理解透彻,这里只是用法的小结)。
IPC 是 Inter-Process Communication 的缩写,含义为进程间通信或者跨进程通信,是指两个进程之间进行数据交换的过程。在说到 IPC 之前有必要简单介绍一下 Android 中的多进程模式。
学习总结--Activity 的生命周期和启动模式
可能是因为处于比较安逸的环境(目前团队移动端项目不多),心态有点浮躁,想要提高自己却又始终没有行动起来,为了改变现状同时也改变自己,前两天定下个目标:每周产出一篇文章,作为自己成长道路上的垫脚石。
这将是一个系列,“学习总结”的系列,主要是对《Android 开发艺术探索》学习的总结,如无特别说明,该系列中的引用都来自《Android 开发艺术探索》。