美文网首页
Fragment注意事项

Fragment注意事项

作者: 陈祥_ | 来源:发表于2022-07-24 19:02 被阅读0次

我们知道,Fragment用起来比Activity要流畅一些,但是写起来会比Activity复杂,其中在使用Fragment的过程中我们还需注意一些地方。

  • getActivity()为空

@Nullable
final public FragmentActivity getActivity() {
    return mHost == null ? null : (FragmentActivity) mHost.getActivity();
    }
  • 使用BaseFragment的mActivity

mActivity在onAttach初始化,在onDetach置空,所以如果fragment有异步任务用到mActivity,需要在onDestroyView的时候停掉任务,避免内存泄漏的同时还可以避免空指针异常

  • 不要在Activity执行onPause方法之后执行Fragment的commit()方法

private void checkStateLoss() {
        if (isStateSaved()) {
            throw new IllegalStateException(
                    "Can not perform this action after onSaveInstanceState");
        }
        if (mNoTransactionsBecause != null) {
            throw new IllegalStateException(
                    "Can not perform this action inside of " + mNoTransactionsBecause);
        }
    }

执行commit方法后Fragment会去检查当前状态,如果Activity执行了onSaveInstanceState方法,frament会抛异常。
当然我们也可以使用commitAllowingStateLoss方法来避免抛出异常,但是这样可能会丢失一些操作。

  • 使用DialogFragment

在显示弹窗前,需要判断activity的生命周期,如果在destroy,不要去show,可以重写一下show方法

@Override
    public void show(FragmentManager manager, String tag) {
        if (Build.VERSION.SDK_INT > Build.VERSION_CODES.JELLY_BEAN) {
            if (manager.isDestroyed()) {
                return;
            }
        }
        try {
            super.show(manager, tag);
        } catch (Exception e) {
            L.error(TAG, "show dialog failed - %s", e.getMessage());
        }
    }

DialogFragment在dismiss的时候也会执行commit方法,所以在onPause之后去dismiss弹窗也会容易出现闪退,可以使用dismissAllowingStateLoss方法避免闪退

  • 在Fragment中申请权限

可以使用fragment的申请权限的方法applyPermissions,权限回调onRequestPermissionsResult,也可以用EasyPermissions申请。但是需要注意fragment的宿主activity不要实现权限回调,不然在fragment中就不能收到申请权限结果回调了

相关文章

  • 初体验之Fragment

    Fragment 注意事项 Fragment使用让人上瘾,但不要过度使用嵌套太多层,听说会出什么不可描述的问题 嵌...

  • Fragment 注意事项

    一、FragmentPagerAdapter 和 FragmentPagerStateAdapter 1. 区别...

  • Fragment注意事项

    我们知道,Fragment用起来比Activity要流畅一些,但是写起来会比Activity复杂,其中在使用Fra...

  • Fragment注意事项总结

    转载自:https://blog.csdn.net/pangrui201/article/details/5147...

  • viewpager 各种问题

    [巧用ViewPager 打造不一样的广告轮播切换效果]fragment 一些注意事项及bug(http://bl...

  • Android

    1.使用ListView注意事项 2.Fragment之间的数据交换 3.Activity之间的数据交换 4.Ja...

  • 内容页fragment注意事项

    类似新闻内容页,viewpager加载多个fragment并且经常切换的需求,这种情况下的内存需要特别注意,一不小...

  • Fragment的使用注意事项

    Fragment任务栈 Fragment也添加任务栈管理,从而实现多个Fragment先后添加后可以返回上一个Fr...

  • Android Fragment 使用注意事项

    最近在做一个SDK,目前大家通用的架构一般都是单个Activity多个Fragment的组合,然后有时候我们会按下...

  • Android Fragment使用和注意事项

    Fragment的中文含义是碎片,在之前安卓开发是,用户界面的切换全部使用activity的切换,这就造成了整个应...

网友评论

      本文标题:Fragment注意事项

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