自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

孙朝阳的博客

逆水行舟,不进则退!

原创 Android知识点总结(五)进程间通信之Binder连接池

Android知识点总结(四)进程间通信 上一篇文章记录了Messenger及AIDL的使用。其中AIDL的使用是最广泛的,其大致流程: 首先创建一个Service和一个AIDL接口 接着创建一个类继承自AIDL接口中的Stub类并实现Stub中的抽象方法(也可以直接使用匿名内部类的方式实现),...

2019-04-11 14:43:13 97 0

原创 Android知识点总结(四)进程间通信

进程间通讯方式 Android进程通讯方式有很多,如Socket、ContentProvider、共享文件(这种方式的缺点是不支持并发写,同时需要手动操作IO)、AIDL、Messenger(底层实现也是AIDL)等。 使用Messenger Messenger是一种轻量级的IPC方案,可以在不同...

2019-04-01 16:35:38 135 0

原创 Android开发技巧总结

1、获取全局Context 编写Application public class MyApplication extends Application { private static Context context; @Override public v...

2018-09-03 15:29:49 213 0

翻译 Dart2学习笔记

官网教程,也是我的学习参照! 基本Dart程序 先来一个基本的Dart程序: //比较简单的英语就不翻译了 // Define a function. printInteger(int aNumber) { print('The number is $aNumber....

2018-06-01 18:27:05 15232 10

原创 算法——快速排序、希尔排序、堆排序

上一篇文章 简单算法——直接插入、冒泡、直接选择介绍了简单排序法,本文在上一篇的基础上,介绍各简单排序法对应的高级算法。 首先依然是做一个公共的元素置换函数 /** * 交换数组元素 * 交换思想很简单 数字x y => x=x+y;y=x-y...

2018-04-18 17:43:19 749 0

原创 简单算法——直接插入、冒泡、直接选择

排序的算法有很多 其中直接插入排序、直接选择排序、冒泡排序属于简单排序,它们对空间的要求不高,但是时间效率却不稳定; 本文将介绍三种简单排序,下一篇会介绍三种简单排序对应的高级排序快速排序、希尔排序、堆排序 首先做一个公用的元素交换实现函数, 下面的swap调用都是这个 /** ...

2018-04-17 14:13:49 1421 0

原创 Android热修复原理

基本概念 热修复是针对apk而言的,所以先来看看apk里都有些什么东西 assets:保留工程中的assets目录,这些文件是原始文件,包含其他jar里的assets文件 lib:so文件 META-INF:签名相关文件 resources.arsc:资源文件索引,包含了所有文件的索引,以及他...

2019-12-24 18:18:11 43 0

原创 Java线程池

线程池的定义 管理一组工作线程,通过线程池复用线程有以下几点优点: 1、减少资源创建 =》减少内存开销,创建线程占用内存 2、降低系统开销 =》创建线程需要时间,会延迟处理请求 3、提高稳定性 =》避免无限创建线程引起的OutOfMemoryError Executors创建线程池的方式 Thre...

2019-11-29 11:48:11 43 0

原创 FFmpeg的使用

FFmpeg库介绍 FFmpeg一共包含8个库: 1、avcodec:编解码(最重要的库) 2、avformat:封装格式处理 3、avfilter:滤镜特效处理 4、avdevice:各种设备的输入输出 5、avutil:工具库(大部分库都需要这个库的支持) 6、postproc:后加工 7、s...

2019-11-25 10:16:10 31 0

原创 NDK系列文章(三)JNI基础

Java和C/C++ 中的基本类型的映射关系 下表中的数据为JNI基本数据类型及对应的长度 d如何配置cmakelist.txt 配置编译动态库和静态库 add_library(jinInterface SHARED library.c library.h)// SHARED 表示是动态库 ad...

2019-09-29 16:20:40 46 0

原创 NDK系列文章(二)C语言基础

函数及参数传递 函数还有很多叫法,比如方法、子例程或程序,等等。 内部函数:内部函数又称静态函数。使用内部函数,可以使函数的作用域只局限于所在文件。即使在不同的文件中有同名的内部函数,也互不干扰。提高了程序的可靠性。 static int max(int a,int b) 外部函数:如果...

2019-09-18 15:59:02 59 0

原创 NDK系列文章(一)—— NDK概览

JNI 简介 名称:Java Native Interface 即Java本地接口 作用:使得Java与本地其他类型语言(如C、C++)交互 JNI是Java调用Native语言的一种特性,JNI属于Java的,与Android无直接关系 Java通过JNI可以调动由C/C++实现的驱动,从而扩...

2019-09-09 16:31:20 58 0

原创 如何卸载Android手机内置应用

1、查看当前打开应用报名 adb shell dumpsys window | grep mCurrentFocus 2、根据包名卸载应用 adb shell pm uninstall [-k] [--user USER_ID] 包名 -k 卸载应用且保留数据与缓存,如果不加 -k 则...

2019-08-20 09:58:09 1608 0

原创 搭建IPC通信框架(RPC)

Android进程通讯方式有很多,如Socket、ContentProvider、共享文件(这种方式的缺点是不支持并发写,同时需要手动操作IO)、AIDL、Messenger(底层实现也是AIDL)等。关于AIDL和Messenger的使用详见Android知识点总结(四)进程间通信 可以发现An...

2019-07-29 17:57:53 291 0

原创 OverScroller的一些重要方法和属性

OverScroll与Scroll类类似,都是实现弹性滑动、惯性滑动的辅助类,只不过OverScroll出现的比较晚,功能更全面一些,可以实现边界回弹等。 之所以说它是一个辅助类,是因为它本身并不能移动View,真正移动View的实现需要我们在回调方法computeScroll()中自己实现。 基...

2019-07-02 18:36:07 408 0

原创 关于手动添加RecyclerView列表项导致Item里的EditText数据混乱的问题

如果没有手动添加Item这个功能,比较好处理一些,最简单的方法禁止复用holder.setIsRecyclable(false);,但如果有手动添加Item,或者要监听EditText的addTextChangedListener,这时就是禁止复用也没有效果。 此时,就得使用绑定tag的方法: 第...

2019-06-27 15:28:44 223 0

原创 实现子view滑动一段距离后,让父view进行滑动

思路分析 前期子view需要滑动,所以要获取事件,即此时父view不能拦截事件 后期父view需要滑动,此时父view需要进行拦截,获取事件 将上面的分析转化为伪代码: //子view @Override public boolean dispatchTouchEvent(Mo...

2019-06-05 12:50:55 219 0

原创 sourceinsight安装、查看android源码

下载安装破解版 https://pan.baidu.com/s/1-OdZf2gmkUn7_P2loLabXg 提取密码:fy3s 安装sourceinsight_4.0.86.0-setup.exe 用sourceinsight4.exe替换掉安装路径里的同名文件 运行出现一下弹框...

2019-05-28 10:39:47 523 0

原创 AndroidStudio编译报错org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:proces

AndroidStudio编译报错: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugResources'. finished with non-...

2019-03-20 16:32:45 21938 2

原创 从零开始手写一个组件化demo

根据上篇Android组件化学习文章,编写一个组件化demo,其结构如下: APP:主module Login:登录组件 Pay:支付组件,支付时需要判断是否登录 Common:基础组件,包含基础库、公共页面等 CommonBase:包含各个组件对外提供访问自身数据的接口、抽象方法等 1、使...

2019-03-01 18:45:55 124 0

原创 Android组件化学习

组件化思想是对模块化的进一步演变,相对与模块化,组件化更加灵活,可以在application与library之间相互转换! 无论是组件化还是模块化,都是对大型项目的一种耦合度的解耦,方便团队协作开发! 上面是组件化的基本架构图,可以看到组件化一个很明显的特点就是分层!还有一个重点就是通信。...

2019-02-21 23:49:32 163 0

原创 Java函数式编程四之并行化操作

Java函数式编程三 并行和并发 并发 和并行是两个不同的概念,它们的作用也不一样。并发是两个任务共享时间段,并行则是两个任务在同一时间发生,比如运行在多核 CPU 上。如果一个程序要运行两个任务,并且只有一个 CPU 给它们分配了不同的时间片,那 么这就是并发,而不是并行。两者之间的区别如图: ...

2019-01-03 15:31:47 114 0

原创 Java函数式编程三之收集器

Java函数式编程二 本文主要介绍高级集合类和收集器 方法引用 Lambda 表达式有一个常见的用法:Lambda 表达式经常调用参数,如: student -&...

2018-12-20 20:00:05 99 0

原创 Java函数式编程二之常用流操作

函数式开发旨在帮助程序员写出更好的代码,如Java8新引入的流(Stream)使程序员得以站在更高的抽象层次对集合进行操作!Stream 是用函数式编程方式在集合类上进行复杂操作的工具。 传统循环操作有很多弊端如需要写很多样板代码、行为意图不清晰等,嵌套循环更严重,另外传统操作对于并行开发也很麻烦...

2018-12-20 17:05:39 98 1

原创 Java函数式编程一之基础介绍

2018-12-13 15:57:35 100 0

原创 Gradle相关知识总结

Gradle简介 Gradle,是一个基于 JVM 的富有突破性构建工具,基于 groovy,其 build 脚本使用 groovy dsl 编写! 任何一个 Gradle 构建都是由一个或多个 project组成。每个 project 包括许多可构建组成部分,由多个 tasks 组成。每个 ta...

2018-12-07 10:20:56 91 0

原创 Java深入解析笔记

关键字与标识符 goto、const、true、false、null goto是Java里的保留字(不使用的关键字),在java里使用标签实现跳转: public class Test1{ public static void main(String[] args) { ...

2018-11-06 13:44:49 90 0

原创 AndroidStudio出现的问题总结

1、AndroidStudio出现Read Timed out 去项目外层的build.gradle中 repositories添加 mavenCentral() maven { url 'https://maven.google.com' } 如图:

2018-10-21 15:30:08 281 0

原创 Android的Drawable

Drawable是一个抽象类,它有众多子类如ShapeDrawable BitmapDrawable等. 它有一个重要的参数是内部宽高,通过getIntrinsicWidth和getIntrinsicHeight获取! 内部大小不等于它的大小,一般来说Drawable没有大小,当其作为View的背...

2018-09-05 18:45:54 498 0

原创 主module或其它module模块 无法引用另一个module里面的依赖

原因是我将所有的module里面的comile全都更换成了implementation,因为编译的时候官方一直推荐使用后者替代前者,但是implementation声明的依赖只能在本module模块内使用,跨module使用就要使用api声明! 如: api 'com.jak...

2018-09-04 14:51:15 4095 3

原创 Android知识点总结(三)自定义View

ViewRoot和DecorView

2018-08-16 18:32:26 198 0

原创 Android知识点总结(二)View的事件体系

VIEW的基础知识 MotionEvent和TouchSlop MotionEvent getX/getY: View相对于父容器的x和y坐标 getRawX/getRawY: 相对于屏幕左上角的x和y坐标 TouchSlop TouchSlop是系统能识别的滑动的最小距离! 和设备有...

2018-08-01 11:03:49 161 0

原创 Android知识点总结(一)

onPause操作里为什么不能做耗时操作 android在onPause里面不应该做耗时操作,因为跳转页面时,先调用当前页面的onPause,再去调用创建,所以这里如果做了耗时操作,就会出现卡顿! onSaveInstanceState、onRestoreInstanceState状态存储相关...

2018-07-06 10:28:30 263 0

原创 Ubuntu18.04上遇到的一些问题及解决方案

Ubuntu下安装淘宝npm镜像后出现“未找到 ‘cnpm’ 命令” 原因是没有建立软连接,解决方案: sudo ln -s /home/scy/ruanjian/nodejs/node-v10.2.0-linux-x64/bin/cnpm /usr/local/bin/ 然后就可以了...

2018-05-27 14:59:34 8058 0

转载 CSDN-markdown编辑器 官方介绍

欢迎使用Markdown编辑器写博客 本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦: Markdown和扩展Markdown简洁的语法 代码块高亮 图片链接和图片上传 LaTex数学公式 UML序列图和流程图 离线写博客 导入导出Markdown文...

2018-05-27 14:44:34 81 0

原创 RxJava2.x学习教程(三)常用操作符

上一篇文章介绍了,创建、转化类、过滤类、合并类的操作符RxJava2.x学习教程(二)常用操作符,本文接着学习其余操作符,如错误处理类操作符、工具类操作符,条件和布尔操作符,综合操作符,连接操作符等! ConcatMap concatMap和flatMap的区别在于 它能保证顺序 ...

2018-05-25 15:55:45 919 0

原创 RxJava2.x学习教程(二)常用操作符

**操作符 ** 操作符官方doc Create Create — create an Observable from scratch by calling observer methods programmatically 最常用的操作符,用于创建一个被观察者(发射事件)...

2018-05-19 19:01:55 1013 0

原创 RxJava2.x学习教程(一)基本概念

RxJava (本文所有RxJava全都代指RxJava2)在 GitHub 主页上的自我介绍是:RxJava – Reactive Extensions for the JVM – a library for composing asynchronous and event-based prog...

2018-05-19 12:14:28 219 0

原创 gradlew常用命令、adb常用命令、adb shell常用命令

gradlew 下面全是针对 windows 操作系统的。如果是 Linux / Mac 请直接用 ./ 前缀。 gradlew clean //类似Clean Project gradlew -v //查看Gradle、Groovy、Ant、JVM等的版本 gradlew build -...

2018-05-14 23:48:31 5865 0

原创 win10 安装运行angular5.x

win10 安装运行angular5.x遇到一些坑,如命令无效、找不到module等,网上也找不到解决方案,坑了一下午,终于解决,特此记录! 首先全局安装angular 下面全程使用cnpm,苦逼的win,在开始就有一个坑,安装angular需要全局安装,否则会引出一系列无法填平的巨坑! c...

2018-05-13 22:32:44 717 0

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