美文网首页
20.12.30附近美食开发总结

20.12.30附近美食开发总结

作者: jeffrey12138 | 来源:发表于2021-01-04 12:04 被阅读0次

这次开发涉及到5个内容:EventBus使用场景,RecyclerView滑动监听,系统定位权限的申请以及定位处理,网络配置,ViewPager2的使用所以,我会在这里进行前四个部分进行问题解决的方案,第五个会单独写个文章进行全面的剖解

1 EventBus使用场景:因为有个需求,需要点击tabview之后,viewpager的fragment中的列表就会回到第一条数据,所以当时就想直接用EventBus去使用,但是其实,可以直接在fragment中暴露一个方法(backTop())出来,在tabview的页面进行pager监听方法中的onSelected进行调用

override fun onSelected(index: Int, totalCount: Int){
mfragment.backTop()
}

然后EventBus的应用场景虽然也可以这样用的,但是建议使用在一个页面的信息改变,但是需要通知到其他页面作出改变的场景

2 RecyclerView滑动监听
设置滑动监听:

mRecyclerView.setOnScrollListener(object: RecyclerView.OnScrollListener() {
    override public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
        super.onScrollStateChanged(recyclerView, newState);
    }

    override public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
        super.onScrolled(recyclerView, dx, dy);

    }
})

onScrollStateChanged(RecyclerView recyclerView, int newState)这个方法在RecyclerView的滑动状态改,newState=0时,RecyclerView在停止状态中
newState=1和newState=2时,RecyclerView在滑动状态中
不同的是,当由0—>1 ,2 时,RecyclerView由静止状态下变为滑动状态,然后1–0 滑动状态变为静止(调用方法 mHomeDateRecyclerView.smoothScrollToPosition(currentPostion); 等这一类方法所触发) , 2–>0 滑动状态变为静止状态(左右滑动RecyclerView 动态的慢慢结束)

onScrolled(RecyclerView recyclerView, int dx, int dy ) 这个方法在RecyclerView开始滑动时实时回调
参数dx dy分别是RecyclerView在滑动过程中,在x轴方向(横向滑动)与Y轴方向(纵向滑动)的偏移量
dx>0 向右滑动
dx<0 向左滑动

dy<0 向上滑动
dy>0 向下滑动

RecyclerView这部分是参考“早起的年轻人”这位大佬的,里面还有滑动距离监听的方法等,详情请查看下面的地址
参考地址:
https://blog.csdn.net/zl18603543572/article/details/77876030

然后,RecyclerView有时候有业务需求判断是否到了底部,请看下“天热死了”这位大佬的文章,文章地址:
https://blog.csdn.net/zhouwengong/article/details/81738261

还有如何滚动到指定位置,请参考下面的文章:
https://juejin.cn/post/6844904143560114189

滚动速度的设置请参考下面的地址:
https://juejin.cn/post/6844903624632434695
https://juejin.cn/post/6844903624632434696

3 关于定位权限以及定位处理,了解下定位的几种方法:
https://blog.csdn.net/ccpat/article/details/106380620
具体使用:
https://www.jianshu.com/p/e97d55262bd4

4关于viewPager切换fragment时,fragment的生命周期变化,请看这位大佬的,详细描述,都写得很清楚:
https://blog.csdn.net/Meikos/article/details/52076907?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromBaidu-1.control
关于这个就总结下,因为这位大佬写得很长,viewPager中,初始化的时候,会预先加载下一个页面fragment,举例:共有四个页面fragment,在初次进入的时候会加载1和2的页面(当前页面为1,1和2都进入onResume),然后切换到2页面,1和2页面生命周期没有任何变化,3页面进行加载(进入到onResume),然后切换3页面,1页面进入销毁,4页面进入到onResume

那么viewpager在后台和前台切换的时候生命周期的变化是怎么样的呢?
举例:当前页面是3页面,从前台切换到后台,2,3,4页面都会进入到onStopo的生命周期,而从后台切换到前台,2,3,4页面就会进入到onResume,那么整体在当前activity,finsh掉之后才会全部销毁

同时需要注意下fragment使用的adapter继承的是有本质的区别的,建议使用FragmentStatePagerAdapter进行继承,为何?请看下面的这个文章:
https://blog.csdn.net/a527891474/article/details/54099649

如果遇到fragment页面数据加载页面,这个问题的解决方式极其简单,就是创建viewpager的adapter时不要继承FragmentPagerAdapter,要继承FragmentStatePagerAdapter,一定要记住!!

原因也很简单,就是因为我们不需要自己去创建和销毁viewpager中的adapter,这两个类中已经帮我们完成了(所以用着会非常非常简单)。

那么最坑爹的来了,在FragmentPagerAdapter中创建完fragment就不会销毁了,所以会导致再次进入就不会重新创建,当然更不会加载网络数据了。相反FragmentStatePagerAdapter就不会。

emmmm,总结结束,就是为了让我自己以后遇到相同的问题知道怎么解决,感谢各位大佬的好文章!!真棒

相关文章

  • 20.12.30附近美食开发总结

    这次开发涉及到5个内容:EventBus使用场景,RecyclerView滑动监听,系统定位权限的申请以及定位处理...

  • 20.12.30

    人最大的对手,就是自己的懒惰;做一件事并不难,难的在于坚持;坚持一下也不难,难的是坚持到底;你全力以赴了,才有资格...

  • 清单20.12.30

    1.投资活动是普通人可以直面真实世界的一个窗口。 2.全美国大概有15000个基金经理,其中有一半人没有往自己的投...

  • 20.12.30 晴冷

    2020年倒数第二天,温度比较低,但是有大太阳,白天还是很暖和的,虽然有点风大,晚上就很冷了的,那个风吹过来阴冷阴...

  • 20.12.30日精进

    其实 我们不需要太多的东西 只要身体健康 家人陪伴 好好的 真诚的爱着 也不失为一种富有 最近几天 新增病历越来越...

  • 【美食推荐】澄中附近的美食

    001一家烧饼 这是最近刚发现的美食,现烤现吃,排队排长龙,图片是葱油烧饼,5块钱一个,相当惊艳! 才一个月时间,...

  • 成都宽窄巷子附近美食攻略_宽窄巷子附近美食推荐

    成都宽窄巷子附近美食攻略之一——奎星楼街 好多人都养成了在宽窄巷子耍了去奎星楼街吃饭,其实要说起“慢生活”小巷,奎...

  • [微语 20.12.30] 惯性

    运动或者静止,都有保持原有形态的惯性。 让积极良好的行为、修为成为一种惯性,是个很不错的举措。 有了惯性,可能就比...

  • 转念角色来

    中原焦点中16 坚持分享第574天 20.12.30 运动打卡第26天 80-2 感叹老师们对成长的渴望,最近遇到...

  • iOS开发经验总结

    iOS开发经验总结 iOS开发经验总结

网友评论

      本文标题:20.12.30附近美食开发总结

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