Android Studio 2.x IncrementalChange反映$change解决方案
程序员文章站
2022-02-14 11:18:05
...
项目中一直有一个反映Json到Java对象的一个工具类、之前项目运行是ok的、但是更新了Android Studio 2.1之后、运行项目怎么之前的功能不能操作了、请求到后端接口总是报 400 Bad Request、然后仔细查看log中怎么多了个$change 自己从来就没有写过这个东东呀、打断点一看、到下面这行代码时才发现问题
Field[] fields = clazz.getDeclaredFields();
解决方案一
既然是增加了Instant Run特性导致的,那就把此特性关闭就可以了(默认是开启的)
关闭方法:Settings> Build, Execution, Deployment> Instant Run> Enable Instant Run to hot swap code/resource changes on deploy(default enabled)(取消此选项)
解决方案二
Field[] fields = objClass.getFields(); for (Field field : fields) { if(field.isSynthetic()){ continue; } //add your code here }
此方法增加了for 及一个判断,Field.isSynthetic()方法是判断当前属性是编译插入时返回true
个人觉得方案一的解决不会改变现有的代码,风险较小,但是不能使用Studio的即时编译特性、方案二我觉得是比较好的方案,可以彻底的解决问题而且还能使用新的特性