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

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

    
  • 相关阅读:
    消息中间件三、RabbitMQ学习一
    消息队列学习一 概念
    发送网络请求调用第三方接口(spring boot框架)
    动态生成javaBean
    达梦dm数据库远程备份与恢复
    springboot定时任务的使用
    抽象与接口
    电商网站后台九大功能模块详解
    面向对象设计—类和对象
    常用的数据结构—数组
  • 原文地址:https://www.cnblogs.com/jzssuanfa/p/7077778.html
Copyright © 2011-2022 走看看