排序:
默认
按更新时间
按访问量

Android屏幕适配详解

刚做Android开发时就研究过屏幕适配的专题,后来只记得常用的那些东西,不常用的就忘了,等再要用的时候又要去查,这次把之前的研究总结一下,记录下来,方便以后查阅。 ppi、dpi、dp详解 1.屏幕密度 ppi:Pixel per inch,每英寸像素数,表示显示设备的像素密度。 d...

2018-06-21 11:11:25

阅读数:109

评论数:0

Android JNI开发二:实战开发详解

调用原理 java代码编译后,运行时会去某个目录寻找so文件、并load,然后调用so文件中的方法,要保证这个流程准确无误,就必须约定好如下条件: java代码运行时,知道去哪里加载so库 —— so库存放目录; java代码运行时,知道加载哪个so文件 —— so库名称; java代码运行...

2018-06-20 18:01:12

阅读数:108

评论数:0

Android JNI开发一:jni、ndk、so理论知识详解

静态库和动态库 静态库就是写代码时引入的lib,你在编写代码时会引用lib中的代码。你的代码编译时,会将lib中的代码一起编译成二进制文件。 动态库则是已经编译好的二进制文件,你在编写代码时无法引用动态库中的代码,因为它已经编译成二进制文件了,同理你的代码编译时也不会编译动态库。你的程序编译好...

2018-06-20 16:11:39

阅读数:73

评论数:0

SurfaceView详解和使用

双缓冲机制 不管是什么操作系统,都有个“图像数据缓冲区”,存放颜色数据,每隔一段时间,把这些颜色数据投射到显示器上,我们就看到了各种各样的画面。 对于应用程序来说,只需要把想要展示的内容存放到“图像数据缓冲区”就可以了,这个操作也基本是系统帮我们做了。这样的模式有个问题就是:如果系统每16ms...

2018-04-17 15:16:31

阅读数:168

评论数:0

MediaPlayer详解和使用

Android多媒体相关的API,网上基本都能找到很多相关的文章,使用起来也很简单,一直在犹豫要不要写这方面的内容,后来决定还是写一写,一方面算是一个归纳总结,另一方面,也方便以后查阅。这一篇就写一下MediaPlayer。 状态图详解 下图是一个MediaPlayer的生命周期和状态。其...

2018-04-13 15:55:51

阅读数:1116

评论数:0

公钥、私钥、数字证书和Android签名

公钥和私钥 一、传统加密的痛点 说起公钥和私钥,就要从信息加密的痛点说起。 小明给jack发消息,为了防止被别人窃听、篡改,需要对内容加密。所以他们两约定了一种加密算法X,小明通过加密算法X对消息加密,jack收到消息后通过加密算法X对内容解密。 问题又来了,这种情况需要小明提前把加密算法...

2018-03-21 17:27:08

阅读数:152

评论数:0

Android系统扫描音频文件详解

扫描文件是在MediaScannerService类的ServiceHandler中:private final class ServiceHandler extends Handler { @Override public void handleMessa...

2017-09-21 14:06:56

阅读数:583

评论数:0

Android获取外置SD卡路径

通过Environment.getExternalStorageDirectory()得到的是内置sd卡,外置sd卡只能通过其它方法获得。比较可靠的方案是通过Linux命令,在命令窗口中输入 mount 或者 cat /proc/mounts 可得到系统挂载的存储。其中最后一行或者倒数第二行就是挂...

2017-08-14 19:18:59

阅读数:430

评论数:0

ExoPlayer开发指南(官方文档翻译)

前言播放视频和音乐是Android开发中很常见的需求。 Android框架提供了MediaPlayer这个类,能够用最少代码实现多媒体播放。同时,Android还提供偏底层的多媒体API,比如MediaCodec、AudioTrack和MediaDrm,可用于构建自定义媒体播放器解决方案。ExoP...

2017-07-27 15:28:22

阅读数:10726

评论数:0

Markdown入门详解

我是一级标题我是标题下的内容 我是二级标题我是标题下的内容,上面的br标签是换行 我是三级标题无序列表:减号后面空格,然后再输入内容就是无序列表 我是第一条无序列表内容 我是第二条无序列表内容 我是第三条无序列表内容 引用:大于号后面空格,然后输入内容就是引用的内容 1、我是引用内容我是引...

2017-07-21 17:50:22

阅读数:272

评论数:0

ConstraintLayout详解

简介ConstraintLayout是谷歌2016年的I/O大会上推出的新控件,Constraint翻译过来就是“约束”的意思,这个控件跟RelativeLayout类似,其子控件通过互相约束来确定位置、大小,但是比RelativeLayout的功能强大很多。使用这个控件作为根布局,可以实现很复杂...

2017-07-14 10:55:26

阅读数:1630

评论数:0

ExoPlayer结构分析

最近要做音乐播放器,经过一周的调研,最终决定使用google的ExoPlayer,对ExoPlayer的架构、流程做个分析,梳理一下调用逻辑。先做个笔记,等项目做完了写一个多媒体播放的大型攻略。媒体资源的获取MediaSource类代表媒体资源,new出这个类的实例需要uri,DataSource...

2017-07-08 16:04:27

阅读数:3063

评论数:1

Android自定义键盘详解、自定义输入法简介

概述Android中有两个系统类是用来实现键盘的,分别是Keyboard和KeyboardView。Keyboard有个内部类Key,用于记录每个键的信息,如code、width、height等。而KeyBorad则持有一个List用于存储所有Key,并对外提供接口。KeyBoardView则是负...

2017-06-24 14:06:48

阅读数:5749

评论数:2

Android中的dex、apk、ClassLoader详解

dalvik加载、运行过程我们编写java代码都是.java格式的,但是jvm并不能识别.java文件,它只能加载、执行.class文件,所以我们要通过javac命令将.java文件编译成.class文件,然后通过java命令运行.class文件。其实,如果用C或者Python编写的程序正确转换成...

2017-05-10 17:49:51

阅读数:1524

评论数:0

Android中的跨进程通信AIDL、Binder源码详解

AIDL AIDL是是Android Interface Definition Language的简称,翻译过来就是安卓进程间通信语言。既然是一门“语言”,就有相应的“语法”。 这个AIDL“语言”严格来说肯定不算一门语言,它只是规定了一些简单的“语法”,开发者遵循这些“语法”,就能比较方便、...

2017-05-04 18:31:29

阅读数:703

评论数:0

Serializable、Parcelable详解

Serializable 这是java提供的序列化接口,实现这个接口的类就能够进行序列化了,所有的实现细节都是系统自动规定、完成的,序列化/反序列化实例如下: // 序列化过程。方便查看逻辑,没有添加try/catch UserBean userBean = new UserBean(&q...

2017-05-04 15:35:53

阅读数:332

评论数:0

Android中AsyncTask源码详解

AsyncTask类结构分析public abstract class AsyncTask<Params, Progress, Result> { // 下面几个都是new线程池的一些参数,就不具体解释了 private static final int CORE_PO...

2017-04-28 16:11:07

阅读数:179

评论数:0

Android中的线程池ThreadPoolExecutor

线程池主要相关的有如下几个类: 1、Executor 最底层的接口,规定了一个void execute(Runnable command)接口,用于执行线程任务;2、ExecutorService、AbstractExecutorService ExecutorService抽象类继承Exe...

2017-04-25 11:56:39

阅读数:194

评论数:0

从源码来分析ThreadLocal、Message、Handler、Looper、MessageQueue

在分析之前先抛两个问题: 1、android系统为什么不允许在子线程中访问UI? 2、主线程Looper死循环为什么没有造成ANR?ThreadLocalThreadLocal是一个负责存储数据的类,其原理是通过一个数组,存储key-value数据,key是线程,value是存储的数据。下面通...

2017-04-20 19:02:17

阅读数:253

评论数:0

JVM内存分配、垃圾回收、类加载浅析

JVM内存分配JVM将内存主要划分为:方法区、虚拟机栈、本地方法栈、堆、程序计数器。如下图所示:其中,虚拟机栈和程序计数器是每个线程独立拥有,方法区、本地方法栈、堆是该进程内的所有线程共享。1、程序计数器 程序计数器占用内存空间小,可以把它看成是当前线程所执行的字节码的行号指示器,每个线程都自己...

2017-04-18 18:07:04

阅读数:284

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭