4 CrazyMo_

尚未进行身份认证

最美不过,心中有梦,身旁有你!

等级
TA的排名 5k+

Android进阶——性能优化之一种更高效更轻量的序列化方案Protocol Buffer完全攻略(十一)

文章大纲引言一、ProtocolBuffer的使用步骤二、在AndroidStudio使用Protobuf1、在AndroidStudio项目中引入protobuf-gradle-pluginGradle插件2、在需要使用Protobuf的Module下的build.gradle使用插件并进行对应的配置3、创建proto文件4、使用protobuf进行序列化和反序列化引言前一篇...

2019-09-15 15:49:49

Android进阶——性能优化之一种更高效更轻量的序列化方案Protocol Buffer完全攻略(十)

文章大纲引言一、ProtocolBuffer概述1、ProtocolBuffer的语言无关及平台无关2、序列化和反序列化2、ProtocolBuffer的优点3、ProtocolBuffer的不足3、ProtocolBuffer的编码引言从早期时代网络编程应用XML作为数据交换的基本格式,再到后来Json逐渐变成主流的数据格式,我想大部分对于这两种数据格式都不会陌生,今天就...

2019-09-13 01:40:53

Android 进阶——Android Studio 项目结构详细述及自定义扩展属性、Gradle 任务及构建生命周期(五)

文章大纲引言一、Gradle自定义扩展属性1、使用def变量名定义局部变量2、使用ext{}代码块声明全局变量3、使用android.ext.或者dependencies.ext.等关键字定义局部变量4、在gradle.properties中定义全局变量二、Gradle任务task1、通过task名称形式定义任务2、task的生命周期3、创建任务的执行顺序1、通过depend...

2019-09-07 17:01:00

Android进阶——一闪而过结合观察者模式灵活利用Framework层自带的“日夜”间模式实现两套皮肤的简单切换

文章大纲引言一、系统自带换肤框架概述二、实现换肤1、引入supportV7的依赖2、在res目录下新建两套资源目录3、调用AppCompatDelegate.setDefaultNightMode(intmode)4、使用观察者模式实现"即时"更新4.1、创建被观察者角色4.2、创建观察者角色4.3、注册观察者4.4、使用引言相信Android的日间/夜间模式切换相信大家在平时使用APP...

2019-08-23 17:04:56

Android进阶——Android控制端连接同一网段Wi-Fi家用打印机小结

文章大纲引言一、通过Android官方提供的打印库1、第一步安装打印服务插件2、判断是否支持打印服务3、调用v4库对应的api完成打印3.1、打印图片3.2、打印PDF二、移花接木三、原始Socket进行网络通信引言最近接到领导的一个需求,需要通过Android端直接控制局域网打印机进行打印,一开始查阅了很多资料包括各大品牌官网开发者文档,最后终于实现了,这篇文章就简单总结下,目前在An...

2019-08-11 14:59:47

Android进阶——使用远程服务AIDL实现进程间带远程回调接口较复杂通信小结(二)

引言作为Android四大组件之一的服务Service,相信大家都不会陌生,从初学者的时候就知道分为本地服务和远程服务。本地服务自不必多说,这篇就总结下如何使用远程服务,由于远程服务AIDL底层涉及到Binder机制(这个是Android核心IPC机制,以后打算专门整理出一系列关于BinderJava层的原理,可以说AIDL就是Binder机制的一种体现),本篇着重总结用法,结合小例子简...

2019-08-06 23:26:26

Android 进阶——Android Studio 项目结构详细述及Gradle脚本语法dependencies节点和依赖管理完全解析(四)

引言前面一篇文章Android进阶——AndroidStudio项目结构详细述及Gradle脚本语法android节点配置完全解析(二)总结了下AndroidStudio中Gradle脚本中最终哟啊的的形式,详细介绍了Project下几乎所有重要文件及目录的重要作用,而对于我们Android开发来说比较重要的是编译脚本的gradle.build文件,这篇文章就好好总结下关于如何解读、配...

2019-08-03 21:07:27

Java 进阶——正则表达式语法详解及灵活使用正则高效操作字符串

文章大纲一、正则表达式的基本语法1、字符类的特殊符号2、标示范围的特殊符号3、边界匹配器的特殊符号二、使用正则表达式匹配字符串三、使用正则表达式分割或替换字符串四、使用正则表达式获取字符串子串毫不夸张地说正则表达式设计之初,就是服务于字符串的,换言之,很多情况下使用正则表达式操作字符串都是最高效的。一、正则表达式的基本语法所谓正则表达式,就是用一些特定的符号来替代一些代码逻辑,把这些特殊符号...

2019-07-27 00:27:06

Android 进阶——Android Studio 项目结构详细述及Gradle脚本语法android剩余子节点配置完全解析(三)

引言前面两篇文章,总结了AndroidStudio项目结构和Gradle脚本中android节点下最重要的productFlavors节点解析,这篇就把android节点下其他剩余节点总结完毕。一、aaptOptions节点aapt全称AndroidAssetPackagingTool即编译资源文件工具,也是通过闭包委托形式进行的配置,用于配置Android插件构建项目时处理资源文...

2019-07-14 01:26:09

Java进阶——多线程之生产者-消费者模型小结

文章大纲引言一、Thread一些重要的操作和方法1、停止线程2、守护线程3、Join方法4、yield方法二、生产者-消费者模型概述三、使用wait-notify等待唤醒机制实现生产者-消费者模型四、使用Lock-Condition机制实现升级版生产者-消费者模型1、Lock概述2、Condition概述引言上一篇文章Java进阶——多线程之线程间的通信、同步、等待唤醒机制小结末尾我们留两个...

2019-07-08 23:21:49

Android NDK——必知必会之配置Windows与Linux共享及 Linux NDK 交叉编译环境配置(一)

引言虽然windows上也可以进行交叉编译,但是有很多库在Linux编译会简单很多,而且也更快一些,当然Mac上也可以编译,不过这篇是总结从0开始虚拟机上配置Linux的交叉编译环境。一、安装VMware虚拟机并安装Linux系统1、安装VMware虚拟机首先到官网下载VMware虚拟机。2、安装Linux系统首先到Ubuntu官网下载Linux系统ubunt...

2019-07-07 01:26:25

Java进阶——多线程之线程间的通信、同步、等待唤醒机制小结

文章大纲引言一、多线程之间的通讯与同步二、使用同步(synchonize)三、等待-唤醒机制引言在项目开发过程中,当多个线程同时操作一个共享资源时,如果不进行同步处理,运行以下代码publicclassThreadInteract{ finalstaticObjectOBJ=newObject(); publicstaticvoidmain(String[]args...

2019-07-03 21:22:25

Java 进阶——枚举enum使用小结及使用枚举替代你的常量类

引言枚举类型是Java1.5中新增特性的一部分,它是一种特殊的数据类型,之所以特殊是因为它既是一种类(class)类型却又比类类型多了些特殊的约束,但是这些约束的存在也造就了枚举类型的简洁性、安全性以及便捷性,同时合理使用枚举不仅能让你的代码可读性增强,而且在某些场景下还能让你的性能更好。一、enum枚举概述Java中的枚举类型采用关键字enum来定义,从JDK1.5才有的新类型,...

2019-06-21 10:27:12

Java进阶——计算机数据的进制特点与转换及位运算小结

文章大纲引言一、进制的种类1、二进制2、八进制3、十六进制二、进制的转换1、十进制整数转为二进制整数2、十进制小数转为二进制小数3、二进制转为十进制4、其他进制的转换5、负数的二进制表示三、进制的算术运算四、二进制的位运算1、常见的位运算符2、位运算的简单应用引言二进制数据或许对于很多程序员来说既陌生又熟悉,熟悉的是都知道计算机是以二进制存储所有数据的这么一个概念,陌生的是对于一些进制之间的转...

2019-06-21 10:26:07

Android进阶——性能优化之进程提权与拉活原理及手段完全解析(九)

引言上一篇文章Android进阶——性能优化之进程保活原理及手段完全解析(一)总结了Android进程和线程的相关知识,主要介绍了几种提升进程优先级的手段,通常仅仅是提高优先级只能让你的进程存活时间久一点,但是真正的被杀死之后就不会自动拉活的,如果你的进程需要尽可能存在后台还需要拉活措施,在被杀死之后一段时间之内自动拉活。(如非绝对的需求,还是少浪费点用户的资源吧)一、系统账户同步机制拉活手...

2019-06-10 10:01:26

Android 进阶——Android Studio 项目结构详细述及Gradle脚本语法android子节点buildTypes、productFlavors、variantFilt完全解析(二)

引言前面一篇文章Android进阶——AndroidStudio项目结构详细述及Gradle脚本语法完全解析(一)总结了下AndroidStudio中组织Android项目结构的形式,详细介绍了Project下几乎所有重要文件及目录的重要作用,而对于我们Android开发来说比较重要的是编译脚本的gradle.build文件,这篇文章就好好总结下关于如何解读、配置和编写正确的gradle...

2019-06-01 22:08:19

Android进阶——动画家族之视图动画、属性动画和过渡(转场)动画最全总结(一)

文章大纲引言一、视图动画ViewAnimation二、属性动画PropertyAnimation1、ValueAnimator2、ObjectAnimator2.1、ObjectAnimator的使用前提2.2、ObjectAnimator的使用ObjectAnimator的主要步骤3、AnimatorSet4、使用LayoutTransition在布局改变时使用属性动画5、使用属性动画用于构...

2019-05-20 00:14:22

Android NDK——实战演练之从零到零点八Android中借助mmap实现I/O(二)

引言前一篇文章Android进阶——从零到零点八真正详解存储映射mmap(一)总结了mmap相关基本原理用法,mmap在内核中的应用十分广泛,我们Android中的Binder本地代码也是使用了mmap的,这里只介绍通过JNI在Android中使用mmap实现I/O,希望不要造成mmap只能做I/O的错觉。一、传统I/O概述在Linux系统中把内存分为内核空间和用户空间,其中内核空间为...

2019-05-13 00:20:53

Android NDK——实战演练之从零到零点八真正详解存储映射mmap(一)

引言或许对于很多Android程序员来说,谈到I/O就以为只有一种Java中提供的传统标准文件I/O,殊不知其实内核还提供了另一种在一定程度上更高效的方式——mmap,事实上内核中进程间的通信很多地方都是通过mmap在两个进程间提供共享存储区,当然不仅仅是在内核层面,很多互联网App中也有使用mmap替代传统I/O,比如说微信开源的MMKV框架,它比SharedPreference更高效的原...

2019-05-12 17:24:26

Android进阶——借助远程服务AIDL完成跨进程更新UI初探

文章大纲引言一、Android跨进程更新UI的方式二、实现AIDL跨进程更新View1、创建更新UI的aidl并定义业务接口2、封装基本的父类和一些工具类3、实现对应AIDL的远程Service4、实现另一个进程的Activity5、在清单上注册服务和Activity6、MainActivity的实现三、借助Aidl和RemoteViews实现跨进程更新UI1、创建AIDL文件2、实现远程...

2019-05-11 22:05:26

查看更多

勋章 我的勋章
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。