Android~Fragment的替代方案

最近在review别人的代码,使用了fragment实现了新UI。在这个过程中又充电学习安卓新的技术,因为又切回到熟悉的移动互联网开发了。

  • 方案一,安卓原生View管理替换。View是安卓所有控件的基类,这种方法简单有效,但分层不清和业务复杂就会显得低效。尤其我们要彻底掌握View的实现原理和相关方法!
LinearLayout layout  = new LinearLayout(this);
layout.addView(childView); //添加视图
layout.removeAllViews(); //移除视图
  • 方案二,使用Fragment模块化管理视图。Fragment使用起来确实很便利,目前它的包名都被谷歌替换为androidx.fragment,之前总是遇到app.fragment和v4.fragment相互冲突的情况。Fragment很适合一个APP中有很多模块是通用,然后APP框架经常要切换不同的模块的情况,比如我们经常还会看到viewpage和fragment搭配使用。
  • 方案三,尝试Shatter或者UIKit-ViewBlockShatter之前叫作UIBlock,ViewBlock它两都是个人开发者维护,大家可以阅读一波源码对比分析一下是实现思路。我们当然还可以尝试Square的一些开源库mortar和flow等。

Shatter是一个代替fragment来划分ui模块的库。它主要完成的工作是管理ui区块,并且能和activity保持完全相同的生命周期,没有任何学习成本。
Shatter对于单页面多ui模块的结构有着很好的支持,非常适合用来降低复杂activity的复杂度。但因为设计的关系,它的生命周期仅仅被activity触发的,所以不会有完整的生命周期的概念。

ViewBlock简介:快速代替fragment的轻量级解耦类,能对复杂布局划分Block…
项目中用 fragment 来降低 activity 的复杂度,但 fragment 带来的各种奇葩问题让我想死。ViewBlock 与 View 绑定在一起大大降低 activity 的复杂度。

更多延伸阅读
1、Android Fragment 替代方案
2、寻找Fragment的替代品的尝试
3、Shatter — Fragment的替代选择方案

发布了99 篇原创文章 · 获赞 185 · 访问量 20万+

猜你喜欢

转载自blog.csdn.net/Bluechalk/article/details/100516718