- 博客(21)
- 资源 (3)
- 收藏
- 关注

原创 Java 反射 Reflection
1. 了解 Java 中的反射1.1 什么是 Java 的反射Java 反射是可以让我们在运行时获取类的函数、属性、父类、接口等 Class 内部信息的机制。通过反射还可以让我们在运行期实例化对象,调用方法,通过调用 get/set 方法获取变量的值,即使方法或属性是私有的的也可以通过反射的形式调用,这种“看透 class”的能力被称为内省,这种能力在框架开发中尤为重要。 有些情况下,我们...
2019-06-25 14:43:14
209

原创 自己动手写网络框架
一、概述最近有个项目,服务器是用的Socket通信,由于是合作开发项目,负责界面的同事,不太想关注具体的业务部分逻辑,直接获取到数据区组织界面就可以了。但是基于socket通信,很难做到这么简洁,想到之前使用过的http,何不按照http模式,简单实现一个易用的网络框架呢?有了想法就要付诸实践。简单流程:二、框架涉及到类:1、Request类,定义了请求命令参数,url地址,请求类型,是否需要缓存...
2018-03-19 16:38:10
926
1

原创 戏说 “AIDL”
一、什么是AIDL AIDL是android接口定义语言,可以利用它定义客户端与服务端进行进程间通信 (IPC) 时都认可的编程接口。跨进程通信,不同的进程,运行在不同的VM虚拟机上,每个进程都有独立的内存空间,管理各自的数据,就像“我住长江头,君住长江尾。日日思君不见君,共饮长江水”。AIDL就是“我”与“君”沟通的桥梁。二、AIDL支持的数据类型“我”与“君”的联系的桥梁已经有了,但是这个桥梁...
2018-03-16 16:30:37
222

原创 多任务下载框架Demo的运用
下载任务和任务调度部分代码之前已经发过了,这里只发UI相关部分代码:/** * <The trouble with the world is that the stupid are sure and the intelligent are full of doubt.> * <p> * HappyBaby * <p> * 作者:Jacky.Ao on ...
2018-03-15 00:19:59
948
3

原创 Retrofit实现文件下载,并更新进度
上一节分析了如何用Retrofit框架中转化器原理,实现了一个文件转化器,从而在使用下载接口的时候直接通过http响应body拿到File对象。这部分我们分析,如何在下载的过程中,实现进度更新。所谓的下载进度就是指,每次从网络数据流中读取文件的大小。有了这个概念后,我们便可以从ResponseBody里面看看是否可以找到我们需要的信息,分析ResponseBody类,具体见源码:通过阅读源码,我们...
2018-03-15 00:15:30
3849
1

原创 利用Retrofit实现文件下载
利用Retrofit下载资源文件,正常情况下应该这样写的:public interface DownloadApiService { @GET Call<ResponseBody> downloadFile(@Url String url);}Call<ResponseBody> call = service.downloadFile();call.e...
2018-03-14 22:32:17
3861

原创 Android系统上SELinux的攻与防
SELinux是Linux系统一个访问控制策略,android中称之为SEAndroid,做系统开发大都会遇到SEAndroid权限问题,之前一直都有在解决相关问题,但是都没有形成文字记录。今天在帮同事调试程序的时候又遇到类似问题,借此机会做以记录,方便以后查询,也给受此问题困扰的朋友以指导。一、SELinux的攻andorid5.x后就引入了非常严格的selinux权限管理机制,我们经常会遇到“...
2018-03-14 17:14:44
1503

原创 手把手教你打造Android多任务下载框架
多任务下载在android app中很多应用场景,比如应用市场下载app,图书下载、音乐下载、电影下载等资源类型下载。一、什么是多任务下载框架多任务框架就是指,同一时间内,支持多个资源下载。支持下载队列、进度更新、下载取消暂停等。包括:网络下载请求,下载任务执行、下载任务调度、UI进度更新、任务状态变化、文件的存储。二、框架流程三、框架代码:下面着重分析下DownloadTask和TaskDisp...
2018-03-14 17:04:05
6721
1

原创 激情撸一发,“爱尚阅”app
利用项目空闲时间,写了一个在线阅读小说的app,由于涉及到版权问题,源就不再这里介绍了。“爱尚阅”是基于MVP架构设计的一款app,UI风格Material design.开发API介绍:1、RecyclerView2、OkHttp3、Glide4、Jsoup5、Retrofit26、Bufferknife7、RxJava8、Materialrefeshla
2016-09-25 21:08:08
27164

原创 MVP 你应该了解的设计模式(二)实例分析
MVP for AndroidMVP代表Model,View和Presenter。View层负责处理用户事件和视图部分的展示。在Android中,它可能是Activity或者Fragment类。Model层负责访问数据。数据可以是远端的Server API或本地数据库或者SharedPreference等。Presenter层是连接(或适配)View和Model的桥
2016-08-10 00:10:08
895

原创 MVP 你应该了解的程序设计模式(一)
MVC之痛说到设计模式,做原生开发的朋友,用到最多应该是MVC设计模式。其实MVC不应该说是设计模式,而是一种框架模式。Model-View-Controller,即模型(数据)-视图-控制器,其目的是将视图和数据分离开来,通过控制器作为链接两者的桥梁以实现解耦。可能你觉得MVC架构已经很好用了,但是在实际的开发过程中你会发现,Controller控制器和View视图显示是在一个类Acti
2016-08-08 23:02:26
651

原创 从一个bug教你如何分析Android系统代码
最近项目遇到一个bug,我先描述下bug现象。耳机模式下,播放音乐,手动背光灭屏(或者自动背光灭屏),音乐暂停;手动点亮屏音乐又可以继续播放,从bug描述上猜测应该是灭屏的时候把音乐暂停了,然而并不是。因为亮屏时发现播放的时间并不是灭屏的时间,也就说灭屏状态下音乐依旧在播放,只是耳机没有输出罢了。既然找到问题原因了,我们接着来分析下声音播放流程。上图是使用MediaPlayer播放
2016-08-02 13:36:24
2154
转载 Android各版本对应的SDK和JDK版本
一、Android各版本对应的SDK版本:平台版本SDK版本版本名称Android 8.026OreoAndroid 7.125NougatAndroid 7.024NougatAndroid 6.023MarshmallowAndroid 5.122LollipopAndroid 5.021LollipopAndroid 4.419KITKATAndroid 4.318JELLY_BEAN_MR...
2018-07-03 13:49:21
6349
转载 React-Native学习资料分享
React Native构建 Facebook F8 2016 App / React Native 开发指南 http://f8-app.liaohuqiu.net/React-Native入门指南 https://github.com/vczero/react-native-lesson30天学习React Native教程 https://github.com/fangwei716/30-d...
2018-07-02 09:08:22
865
转载 Android屏幕适配很麻烦吗?不!太简单了。。。
前言作为一个Android开发人员,你还在为了适配各种尺寸的屏幕而苦恼吗?你还在为了出现一个新的机型而修改着数不尽的dimens和layout吗?你还在为了UI给的奇葩尺寸的设计图而绞尽奶汁计算距离吗?如果你为了这些事情而苦恼,那么看完这篇文章,希望可以帮你减少开发时间,减缓生命的流逝速度。。。不知道大家有没有看过前一段时间今日头条技术团队发表的一篇关于Android屏幕适配的文章:一种极低成本的...
2018-06-29 09:20:06
737
原创 关于GLSurfaceView 渲染的那些事
上文我们说到如何使用GLSurfaceView 进行camera预览,但是关于camera的预览数据是如何渲染到屏幕上的还是一头雾水,下面我们就结合源码,说一说GLSurfaceView 渲染的那些事。一、还是从camera预览作为切入点,在预览的时候会创建和绑定一个纹理即SurfaceTexture,然后通过Camera调用setPreviewTexture并将创建的纹理做为参数传进去。然后
2016-07-30 17:57:31
3181
原创 React Native HelloWorld初探
Facebook 在 React.js Conf 2015 大会上推出了基于 JavaScript 的开源框架 React Native。React Native 结合了 Web 应用和 Native 应用的优势,可以使用 JavaScript 来开发 iOS 和 Android 原生应用。在 JavaScript 中用 React 抽象操作系统原生的 UI 组件,代替 DOM 元素来渲染等。React Native 使你能够使用基于 JavaScript 和 React一致的开发体验在本地平台上构建世
2016-07-30 13:49:22
680
原创 Android MediaProvider数据库模式
1. 如何提取数据库以 root 权限进入 adb shell,使用 sqlite3 打开位于手机上 /data/data/com.android.providers.media/databases 上的一个数据库。以 external 开头的数据库存储的是 SD 卡媒体信息,一张卡对应一个,所以如果手机使用过多张卡会有多个数据库。以 internal 开头的数据库存储手机内部存储器的媒体信息
2016-07-30 13:47:56
1675
原创 Camera 预览之SurfaceView、TextureView、GLSurfaceView(三)
今天介绍下GLSurfaceView如何使用。GLSurfaceView的包名是android.opengl,由此可以它是opengl的一个类,它也可以预览camera,而且在预览camera上有比SurfaceView独特的优势,可以做到数据和显示的分离,比如在没有屏幕的设备照样可以开预览实时直播。下面要介绍的这个例子是获取camera预览数据编码为视频流。但这篇文章只介绍如何使用GLSurfaceView去预览,关于获取预览数据编码视频流后续会介绍。
2016-07-30 13:46:36
6145
原创 Camera 预览之SurfaceView、TextureView、GLSurfaceView(二)
随着项目一步步往前推进SurfaceView无法满足要求了,因为需要对预览视图进行变换处理,TextureView就被呼唤出来了,看下官网对TextureView的解释:A TextureView can be used to display a content stream. Such a content stream can for instance be a video or an Op
2016-07-30 13:44:49
2161
原创 Camera 预览之SurfaceView、TextureView、GLSurfaceView(一)
最近在做一个VR项目,使用到Camera功能从项目的不同需求从最开始使用SurfaceView、到TextureView一直到GLSurfaceView。SurfaceView 官网的解释是:Provides a dedicated drawing surface embedded inside of a view hierarchy. You can control the format
2016-07-30 11:56:09
3385
1
c语言库函数详解,libc库中的关于字符串处理等
2009-04-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人