Android Studio 2.x IncrementalChange反映$change解决方案
2016-05-27 16:08:47  By: dwtedx

项目中一直有一个反映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)(取消此选项)

$change反映


解决方案二

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


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


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

若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力

想获取DD博客最新资讯、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)

或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)

如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教

为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)

感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛


猜你喜欢的

快速评论


博文评论

  • 该博文还没有评论、赶快抢沙发吧...
DD记账
top
+