William的小星球 
  • 首页
  • 归档
  • 分类
  • 标签
  • 关于
  •     
android的Jni方法单元测试

android的Jni方法单元测试

本文记录: 使用cmake来构建android jni的c层代码。并使用android instrumented unit test 来测试jni方法和c层方法。 1 概述 jni方法为什么要用单元测试? 有的jni方法在项目里触发条件复杂,作为开发者需要像普通用户那样去操作触发对应逻辑才能测试到Jni方法,效率低下。而使用单元测试则可以比较高效率地测试比较难触发到调用jni的场景。 什么场景下用单元测试来测试jni方法? 理论上来说所有的代码都能够在单元测试的环境下被测试到,但是有时需要一些比较复杂的上下文,或者代码的上下文搭建不容易,而直接运行项目测试更简单,所以,不是所有的jni方
 2020-06-06   单元测试    android单元测试 

重新理解Java泛型

介于我在写业务代码的时候时,想用泛型来实现代码复用,但是由于接口较多,抽象程度较复杂,导致没有理清楚泛型的关系,因此重新学习理解Java泛型。 1 作用对象1.1 泛型类当泛型作用在类上,即一个类是一个泛型类的时候。泛型是类的参数。 例如: 我们创建一个有Id标志的数据类。无论类中的泛型参数T是什么类型的,这个类都有一个id。 public class IdData<T> { String id; T data; } 当我们作为这个泛型类的客户时,我们要用泛型类。使用泛型类的时候,我们需要指定类的泛型参数,从而让这个泛型类因为泛型参数的不同而变成不同的类(虽
 2020-06-01   Java   
重新理解MeasureSpec

重新理解MeasureSpec

1 概述网上有许多非常好的文章都在介绍MeasureSpec的测量规则,但是没有介绍MeasureSpec的作用和应用场景。 MeasureSpec是一个int,他将SpecMode和SpecSize封装到了一起。 那么实际上MeasureSpec他是一个对:值和模式的一个封装。 在这里,size和mode是成对出现的,他们一起作用。 MeasureSpec可以翻译成:测量说明书。 他由手机屏幕的Window开始,将测量说明书生成并往下传递给DecorView,DecorView再生成自己的测量说明书,往下传递,不断递归,每个ViewGroup都根据父View的测量说明书和自己的尺寸,生成自
 2020-05-28   View    View  自定义View  重新理解系列 

子View设置尺寸大于父View时会超过父View大小吗

 2020-05-28   View   

浅谈LayoutParams

0 概述LayoutInflater在Android开发中有大量的使用场景,例如: Activity和Dialog的setContentView方法内部用LayoutInflater从xml文件中加载出View对象。 Fragment中用LayoutInflater创建一个View返回给Fragment。 RecylerView的每一个Item对应的ViewHolder在创建的时候,需要先用LayoutInflater创建出对应的Item的View。 其他的,我们自己创建View的场景,比如自定义View等。 那么你是否了解LayoutInflater在创建View的时候,是如何处理Vie
 2020-05-26   View   

gradle的properties文件

我们知道在gradle中可以用 gradle.properties文件来设置属性。一般.properties文件的位置是定义在和build.gradle和settings.gradle同级的目录下。 1 简单使用在gradle.properties中定义一个属性是这样的: PRO_A=12 然后在构建脚本里就可以用到这个属性了: task A(){ doLast{ println(PRO_A) } } 2 和ext属性的关系首先确定的是,gradle.properties中定义的属性是属定义他的gradle项目的project对象的属性的。 其次,在gradle
 2020-05-11   Gradle   
Android调试ViewTree工具.md

Android调试ViewTree工具.md

AndroidStudio自带的LayoutInspector在Android开发的时候,我们在调试复杂的UI界面上的问题的时候,有时希望借助AndroidStudio自带的调试工具:LayoutInspector来查看当前界面的View Tree。 没有遇到问题的话,他能出现这样的调试效果: 调试UI遇到的问题但是,当你的Activity的界面非常复杂,例如存在大量的View,存在视频,存在View动画等情况。这时这个调试工具就不生效了。 这时会遇到: Error obtaining view hierarchy : There was a timeout error capturin
 2020-05-05   个人开源项目    Android  开源  调试工具 

Android视图调试技巧

1. 追踪某个View的方法调用。如果某个View的尺寸错乱,有可能是这个View的关于设置尺寸的某个方法在某个你没有找到的地方被调用了。 例如setLayoutParams()方法被意外地调用了。 如何找出调用堆栈? 需要重写setLayoutParams()方法,然后筛选传递进来的错误的参数,然后在重写了的方法中加个断点,然后开启debug,就能找出调用处了。 对于别的方法,例如setVisibility()。都采用类似的方式,就可以马上排查出错误的地方的堆栈从而解决问题。 通过view tree来排查问题。
 2020-04-14   View   
hexo搭建博客并将简书文章迁移

hexo搭建博客并将简书文章迁移

在经过多次的考虑后,我还是打算将所有的博客的数据由自己维护。因此找了一种比较简单的方式:hexo + github pages 迁移博客的原因 简书的博客没有文章的导航栏,我每次用Markdown写文章发布后,简书不会自带文章大纲,无法检索。 简书的曾经被叫停过一次,在那之后,简书的访问速度变慢了,我担心后面简书会挂掉,我的文章拿不出来。 简书的文章类型繁多,不是技术型的平台。当然我也看了其他很优秀的技术型平台,例如掘金和语雀。但是掘金不支持文章导出,语雀导出的文章貌似只有他们自家的语雀平台能够二次使用,不是Markdown类型的。因此放弃在第三方平台写博客了。 自己搭建博客,自己选主题和功能
 2020-03-29   搭建博客相关    博客 

ffmpeg常用命令

用来表示视频文件的地址。 查看关键帧数据:ffprobe -show_frames -select_streams v:0 -print_format csv <url> | grep ",I," 查看流信息:ffprobe -v quiet -print_format json -show_format -show_streams <url> 查看分辨率:ffprobe -v debug -select_streams v -skip_frame nokey -count_frames <url> 2>&1|grep R
 2020-03-21   音视频开发   
123…21

搜索

Hexo Fluid