zoukankan      html  css  js  c++  java
  • Fragment使用的正确姿势

    

    网上关于Fragment的使用建议和分析非常多,可是依旧会有非常多人在使用Fragment的时候出现各种奇葩错误
    这篇文章我分享一下各种项目中解决Fragment的各种注意事项(不做原理分析),假设有错误欢迎大家指出
    0,必须知道Activity 、Fragment的生命周期。平时多看多对照就好。强记感觉效果不好
    1,假设Fragment初始化时须要传入參数那么必须实现setArguments,同一时候必须又一次onCreate方法对存入的值进行读取
    2,Fragment假设在执行期间參数的新的所有变量(网络。计算等)。必须在onSaveInstanceState里面进行保存;能够在onViewCreated里面又一次对view赋值
    3。尽量不要用到getActivity,假设用到一定须要非空推断
    Fragment最好不要用到异步线程,假设用到一定要考虑fragment是否被回收后线程回调情况;或者在onPase里面中断
    假设非要有这种情况。能够把这个交给它的activity'来处理
    5,假设在其他地方拿到frament的引用在使用它的所有变量。必须考虑当前fragment是否存在或者2是否已经实现
    6,FragmentManager系统会用这个来管理假设出现的fragment,假设出现奇葩的不可理解的异常请想一下这个类
    举个栗子:viewpager+fragment的使用场景,List<Fragment> mFragments 中须要改动或删除当中的对象,调用刷新比起作用。简单改动你须要在FragmentManager里面移除你须要变得的fragment或者替换,就可以达到效果
    7,百度统计关于fragment的统计未考虑6情况。可能会造成onResume和onPase方法不一致,然后给出一个内存泄露的警告
    8。假设在fragment的布局文件直接指定点击处理事件,假设在当前的fragment里面找不到,请看载入它的Activity
    9,fragment里面startActivityForResult,在低版本号里面不会有对应的回调。解决的方法在它的Activity里面处理
    10,fragment里面 View mView = inflater.inflate(R.layout.xxx null)。第二个參数假设没有特殊使用请设置null
    11,一个优化FragmentManager能够用findByTag获取你当前使用的fragment,而不用时时的保持引用(注意6)
    12,v4包和sdk以下的引用路径用的不是一个东东,会有兼容问题
    13。请用DialogFragment代替AlertDialog

    最后补充一个图来源不知道了

    
  • 相关阅读:
    关于钩子函数的详细解答:
    Vue实现回到顶部
    Vue实现Rate组件(星星评分)
    Vue-router 路由模式
    javascript中实现跨域的方式
    Promise
    webpack使用
    小程序登录
    api工厂的sdk的使用
    面试题划“重点”
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7077778.html
Copyright © 2011-2022 走看看