美文网首页
项目思考

项目思考

作者: ModestStorm | 来源:发表于2022-02-24 19:46 被阅读0次

JpAssist:

背景:解决方法替换问题:日志输出替换和SP方案替换
举措: JpAssist 是一个轻量级的 Android 平台字节码编辑插件,基于 Javassist 对字节码操作,
根据 xml 配置处理 class 文件,以达到对 class 文件进行动态修改的效果。和其他 AOP 方案不同,JpAssist 提供了一种更加轻量,简单易用,无侵入,可配置化的字节码操作方式,不需要有 Java 字节码的相关知识,只需要在 Xml 插件配置中添加简单的 Java 代码即可实现类似 AOP 的功能,同时不需要引入其他额外的依赖。

1.定义Gradle transform插件,收集配置xml替换信息,根据配置文件扫描所有类,匹配查找到的类进行代码替换。

2.JpAssist 实现了日志输出替换,系统 SharedPreferences 替换,SharedPreferences commit 替换 apply等功能。

3.由于安卓系统 SharedPreferences 自身机制的问题,当使用 SharedPreferences.apply() 方法过于频繁时,出现大量由 QueuedWork.waitToFinish() 造成的卡顿和 ANR,主要原因是系统在 Activity 的 onPause、onStop,以及 Service 的 start 和 stop 生命周期时会执行等待,google本意是在用户离开组件之前确保操作完成写入,保证持久化成功率。

4.对系统 SharedPreferences 进行改造,实现自己的 SharedPreferences。大概的思路:
重写 apply()方法
不往 QueuedWork 里添加 finisher(Runnable),而是开启单线程池去执行,这样QueuedWork 的 finisher 队列为空,就不会在 QueuedWork.waitToFinish() 时产生阻塞,根据这个思路,我们实现了自己的 SharedPreferences 继承系统SharedPreferences达到兼容的目的

通过Chroger编舞者通过FrameDisplayEventReceiver#ScheduleVsync方法注册下一个垂直信号脉冲,当收到垂直信号脉冲时系统会回调onVsync(long timestampNaous, int displayId,int frame),onVsync方法内部会通过handler发送消息,Looper.loop()循环取出消息执行,执行逻辑中判断当前时间戳与onVsync方法参数的timeStamp计算时间差,就可以算出从接收到时间脉冲信号到消息执行的过程中的时间差除以(1帧时间是60ms/60*1000000)就是当前刷新的跳帧数SkipFrames

针对sd卡本地图片(BitmapFacyory.decodeFile),网络图片(decodeStream),资源文件图片(decodeResource)分别实现大图监控
1.针对网络图片使用csdn网络请求图片根据请求参数裁剪图片返回适合view大小的图片
2.在debug测试包中针对decodeFile,decodeStream,decodeResource使用aspctj arround模式拦截上述方法来获取方法返回值bitmap图片,计算bitmap图片大小超过1M抛出异常提示开发者

相关文章

  • 项目思考

    JpAssist: 背景:解决方法替换问题:日志输出替换和SP方案替换举措: JpAssist 是一个轻量级的 A...

  • 项目思考(一)

    项目背景:当初想做这个项目的初衷是因为自己经历过2次搬家,都因为搬家公司的服务态度(1、坐地起价 2、服务态度差...

  • 思考项目管理

    今天去总行开会了,主要还是给领导汇报,然后就又是一堆问题,说实话就像曹处说的,项目组办事效率太低,几十个问题能拖两...

  • 项目运作思考

    1.渠道推不推我们的方案? 2.渠道为什么推我们的方案?还推了其他家的方案没?怎么验证? 3.这个渠道是客户的哪一...

  • 项目运作思考

    1.渠道推不推我们的方案? 2.渠道为什么推我们的方案? 3.这个渠道是客户的哪一层关系?他们做下项目的概率有多大...

  • flutter 项目思考

    https://github.com/LBXjixiangniao/flutter_summary/blob/ma...

  • 项目回顾-思考

    做了一个外包,有点小感悟,记录一下: 1、一定要定期定时的进行开会沟通日常的寒暄本周工作内容汇报下周工作计划(下周...

  • 项目思维之学习复盘

    我听了素宣老师《项目思维丨事事皆项目,人人懂管理》后,我有4点感悟: 1、【课前思考】 秀姐的思考便签:项目管理的...

  • 模拟项目收集

    深度思考训练营,模拟项目收集。 要求:没有人做的项目

  • CPS项目的思考

    这段时间摸索了2种新的项目玩法,一种叫CPA/一种叫CPS。这2种项目逻辑基本上可以说是当今互联网80%的玩法了。...

网友评论

      本文标题:项目思考

      本文链接:https://www.haomeiwen.com/subject/gugilrtx.html