首页
学习
活动
专区
工具
TVP
发布

移动开发面面观

专栏作者
80
文章
95098
阅读量
30
订阅数
LeakCanary源码解析
LeakCanary是Android开发中非常常用的一个内存泄漏监测和分析工具。了解其工作原理,有助于对Android的内存泄漏有更深层次的认识。
Oceanlong
2019-03-15
9630
Future备忘录
Future是一个接口,它的主要目的,是为了我们能够方便的控制在线程中的任务的进度。在实际使用中,它常与Callable一起使用。本文主要为了理清,Java中,线程任务的各种类的关系。
Oceanlong
2019-01-28
3560
Android插件化——资源加载
前言 资源,是APK包体积过大的病因之一。插件化技术将模块解耦,通过插件的形式加载。插件化技术中,每个插件都能够作为单独的APK独立运行。宿主启动插件的类,难免要涉及插件类中的资源问题。 那么,如何加载插件资源,就成为一个待解决的问题。 原理 参考APK打包流程:Android插件化基础-APK打包流程 Android工程在打包成apk时,会使用aapt将工程中的资源名与id在R.java中一一映射起来。 R.java public static final int ic_launcher=0x7f
Oceanlong
2018-07-03
1.3K0
Android并发备忘录
前言 随着Java的发展,并发这个概念不再是服务端独有的了。Android等移动端在App越做越大的趋势下,合理地控制并发也成为了一个非常重要的技能。在这里对Android开发中可能用到的并发知识做一个记录,以作备忘。 ---- 线程 提到并发不得不提线程。线程就是CPU将计算的时间片,分配给某个任务。线程与CPU核心数量并不直接关系,单核CPU也可以模拟出多线程,只是它将时间片分给不同的线程,让他们交叉执行任务。 值得注意的是,线程的主要作用是让任务能够并行执行。它并不能保证任务能够更快的执行。尤其在单核
Oceanlong
2018-07-03
4910
Java学习笔记——对象的生死
Java堆的回收 引用计数算法 给对象中添加一个引用计数器。每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器的值就减1。任何计数器为0的对象就不会再被使用了。 引用计数算法实现简单,判定效率也很高。在大部分情况下它都是一个不错的算法,也有一些比较著名的案例。但是它很难解决循环引用的问题。 如:对象objA和objB都有字段ins。赋值令objA.ins = objB; objB.ins = objA;除此之外,两个对象再无任何引用,实际上这两个对象不会再被访问了,但它们互相引用着,所以它们的引用
Oceanlong
2018-07-03
3260
Java学习笔记——内存管理Java内存管理
Java内存管理 简介 Java虚拟机的内存管理分为以下几个运行时数据区: 方法区 堆 虚拟机栈 本地方法栈 程序计数器 其中,方法区和堆是所有线程共享的数据区,而其他的是线程隔离的数据区。 堆 Java堆,又称GC堆,是GC的管理的主要区域。在虚拟机启动时创建。主要作用是存放对象实例,几乎所有的对象实例都会存放在Java堆中。Java堆可以处于物理不连续的内存空间中,只要逻辑连续即可。通常Java堆是可扩展的。当Java堆无法申请到所需的内存空间来存放实例,也无法扩展时,会抛出,OutOfMemoryEr
Oceanlong
2018-07-03
1.4K0
Glide缓存探密Glide的缓存策略
Glide的缓存策略 前言 众所周知,图片加载框架的基本模式就是三层缓存。内存、文件和网络。所有图片加载框架的基本思路都是先从内存中寻找需要的数据,如果找不到转到文件中寻找,还是找不到,才会去网络下载。但Glide在缓存策略上,花费了很多心思,从而使得其在加载图片过程中,对内存的使用量非常小。 本文将分享Glide在缓存策略上使用的技巧。 内存低消耗的秘密 在图片加载过程中,通常来讲,内存消耗的部分在于图片的解码。我们需要根据图片的尺寸,创建一个相应尺寸的Bitmap,这个Bitmap会存入内存缓存,然后通
Oceanlong
2018-07-03
1.2K0
JNI处理图片——黑白滤镜
前言 在Android的开发中,我们有时会遇到对性能要求比较高的模块。所幸Android通过NDK为我们提供了c++开发的方式。我们可以通过c++完成核心的耗时的计算,然后通过JNI的方式将处理完成的
Oceanlong
2018-07-03
1.4K0
Handler源码分析
前言 Handler是Android开发中,使用非常多的一个类。关于它的坑也不少。我们使用它最多的场景就是非UI线程更新UI。也就是说我们把它当作线程间通信的工具。 今天我们通过阅读它的源码来分析它的工作原理。从而更好地使用它。 ---- Handler构造方法: Handler.java: public Handler() { this(null, false); } public Handler(Callback callback, boole
Oceanlong
2018-07-03
1K0
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档