android studio中的instant run造成的一些奇葩bug

来源:互联网 发布:信息技术教学的软件 编辑:程序博客网 时间:2024/05/18 00:14

android studio中的instant run造成的一些奇葩bug

首先描述一下场景,今天在模拟器上调试app,在一个首页的Banner轮播,非常简单的代码就是一个ViewPager,每次我修改完代码运行模拟器的时候,ViewPager轮播就会很卡,最开始的时候我以为是自己适配器的问题。以为自己从网络上加载图片太大,但是后来我用自己本地图片测试的时候也会有这个问题,经过几次调试,发现了一个问题,在我卸载模拟器上的app或者释放手机内存之后,再次重新运行app,这个时候轮播是非常流畅的。

下面是截图

这里写图片描述

第一次运行

这里写图片描述

注意观察两个图片中间的间隔,这是我第一次运行没有问题 很流畅

下面是我android studio多次修改代码后启动app进行调试之后

这里写图片描述
这次发现在两个图片间隙会发现还有图片!!!
就是说我ViewPager底部还会有内容,这是怎么做到的。。。

造成这个的原因

**我的布局大家可以看出来,是在一个Activity中通过下方导航栏的按钮 切换显示不同界面,就是这里的问题,每次我点击下方按钮的时候我会往Activity布局中添加一个Fragment,当然只会添加一次,不会重复添加同一个类型的Fragment。
这里最开始我以为是有2个ViewPager,后来我在Activity的布局中打印数量发现是Fragment的数量变多了,我就纳闷了,怎么会出现这种情况的
在onCreate方法中trading_radio.performClick();调用了一次加载HomeFragment
这里写图片描述
明明已经判断了的 为什么会在fragment_container中会出现多个HomeFragment的。后来网上查资料发现android studio的instant run,这种模式运行app是不会每次都去重新启动app,而是在app不重启的情况下为了让你看到效果,减少第二次及以后的构建和部署时间,会修改你的代码,具体情况也不清楚,不知道那个HomeFragment是怎么再次或者说是在什么地方加载进入fragment_container中的。每次run的时候Activity是重新执行了的,onClick方法也是执行了一次,给我的感觉就是Activity是重新运行了一次,但是对应的布局没有更新而是在原来的基础上再次往之前的布局里添加了一个HomeFragment。这个问题折腾了快2小时了,除了instant run是在不晓得是什么造成的。

原创粉丝点击