组件化中遇到的问题

android组件化方案整理
之前整理过组件化的知识点以后,就开始弄公司的项目了。这里把暂时遇到的几个问题整理一下。


AAR的引入问题

情景: 把aar放到commentLibrary里面,在其他project或者library中调用其中的方法,就避免了重复复制的问题。
在commentLibrary里配置好以后,你所有引入这个library中都再需要配置一下:

在android节点内:
repositories {
        flatDir {
            dirs '../commonlibrary/libs'
        }
    }

组件化和MVP的碰撞

之前的MVP一直用的都是比较简单的形式,V(Library中的fragment)和P的绑定是放到activity(project的Main)中,也就是fragment初始化的时候的。但是我们的组件化是肯定要解耦的,那么activity中就不能有Lirbrary中类的引入。所以之前的MVP就需要改变一下。那么fragment和BaseView中间就需要抽离出来一个BaseFragment,它既作为ARouter初始化的返回:

Fragment fragment = (Fragment) ARouter.getInstance().build(RouteUtils.CaptureScene_Fragment_Main).navigation();

也作为activity中初始化的使用:

BaseFragment tasksFragment =
                (BaseFragment) getSupportFragmentManager().findFragmentById(R.id.contentFrame);
        if (tasksFragment == null) {
            // Create the fragment
            tasksFragment = FragmentUtils.getCaptureSceneFragment();
            ActivityUtils.addFragmentToActivity(
                    getSupportFragmentManager(), tasksFragment, R.id.contentFrame);
        }

同时,把V和P层的绑定放到BaseFragment中:

public abstract class BaseFragment<V extends BaseView, P extends BaseMvpPresenter<V>> extends Fragment {
    private P presenter;

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (presenter == null) {
            presenter = createPresenter();
        }

        if (presenter == null) {
            throw new NullPointerException("presenter 不能为空!");
        }
        //绑定view
        presenter.onAttachMvpView((V) this);
    }

    /**
     * 创建Presenter
     *
     * @return 子类自己需要的Presenter
     */
    protected abstract P createPresenter();

    public P getPresenter() {
        return presenter;
    }
}

这里推荐一下高级MVP架构封装演变全过程
我在去年的时候有参考他的基础架构写过OKHTTP的基于OKhttp的MVP封装,他提供了多种进阶方案,比较你能百度到的大多数MVP的文章,我认为他是写的不错的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值