一种打点逻辑的实现方案

项目中经常需要做打点。下面是一种打点逻辑的实现方案,例子如下所示: 代码在:https://github.com/legendmohe/StatisticPipeLine

[Android] 如何理解dumpsys activity打印出来的view的信息

有时候,我们用dumpsys activity [package name]来查看当前app的一些view信息,其中有:

类似“{cf5432b V.E…… …….D 0,0-1080,1920}”的信息,实际含义是什么呢?

这里dump出来的信息,其实是通过view.toString()方法打印出来的,这里贴一下代码,备查:

以上

[Java]项目Java文件相似度检测工具

为了排查项目中重复文件(代码),制作了Java文件相似度检测工具。

本工具基于项目https://dickgrune.com/Programs/similarity_tester/

使用方法:

其中 -i 表示相似度阈值,默认90,即90以上相似度的结果才会打印出来。开发者可根据结果,对项目进行重构。

注:目前jar仅支持win平台,java文件的相似度比较,源码地址:https://github.com/legendmohe/simcode

[Android] apk方法数量,类数量对比工具

为了方便比较两个版本间类的数量,方法的数量的变化,现提供工具dex-method-diff。

使用方法:

其中–mapping是可选项,例如:

源码:

https://github.com/legendmohe/dex-method-counts

[Android] Preloader 预加载框架

简介

Preloader是一个用于异步加载数据的工具。它提供同步或者异步的获取结果回调。
适当地使用可让业务层获取数据的时间点提前。

使用例子

以简单activity跳转的例子为例,从MainActivity跳转到SubActivity。其中SubActivity的完整
显示需要发起一次请求,获取到结果后显示在中央的textView。

利用Preloader,我们可以在MainActivity发起跳转的时候开始请求,在SubActivity需要的时候将结果取出。
这样子可以把获取结果的时间点提前,起到加速显示SubActivity的作用。

代码如下所示:

  • MainActivity:

  • SubActivity:

注意事项

  • 可通过PreloadTask.setGetResultTimeout设置异步获取结果的超时时间,默认为30秒。
  • 如果PreloadTask.isClearWhenGetResult()==false,那么需要使用者自己调用Preloader.clear方法来释放预加载task,
    否则预加载task将在第一次成功获取结果后被释放(无法再次通过Preloader.getResult取结果)
  • 对于同一个preloadResult对象,可多次调用get(),互不影响。

源码

https://github.com/legendmohe/Preloader

[Android] 列表预加载工具类DataPreloader

DataPreloader用于实现列表数据预加载需求。注意这里的预加载是指预加载数据项的详细信息(例如预拉取视频列表里面某些视频的播放地址等),不是指预先拉取更多的列表项。

概念说明

  • 加载窗口preload window:即需要发起预加载的项目的index区间
  • 焦点:即当前外围逻辑所关心的中心点的index,决定了区间的中心

该工具类引入加载窗口的概念(由upperPosition和LowerPosition组成的闭区间),外围调用triggerPreload()传入当前焦点的index,该工具类即回调哪些index离开了加载窗口和哪些index进入了加载窗口(即窗口的变化情况)。外围可以根据回调来进行加载或取消加载。

使用说明

详见代码和注释如下所示:

使用例子如下所示:

注意: 合理设置区间的upper和lower。例如用于列表预加载时,可只设置upperBound,而lowerBound设置为0,那么该工具类只会回调后面的数据,不会回调前面的数据

源码:https://gist.github.com/legendmohe/651cd418054a53f64bdd105f67265f15