欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  博文

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)(取消此选项)

Android Studio 2.x IncrementalChange反映$change解决方案


解决方案二

Field[] fields = objClass.getFields();
for (Field field : fields) {         
    if(field.isSynthetic()){
        continue;
    }
    //add your code here
}  


此方法增加了for 及一个判断,Field.isSynthetic()方法是判断当前属性是编译插入时返回true


个人觉得方案一的解决不会改变现有的代码,风险较小,但是不能使用Studio的即时编译特性、方案二我觉得是比较好的方案,可以彻底的解决问题而且还能使用新的特性