安卓Mvp架构(java、kotlin)

本文介绍了Android的Mvp架构,包括java和kotlin版本的实现与依赖,强调了低耦合和易于扩展的特点。文章详细讲解了Mvp的核心原理,并通过对比不同示例突显其优势。同时,提供了源码链接供读者深入研究。
摘要由CSDN通过智能技术生成

疫情刚好静下心来回归过去的工作,工作以后往往都是往前跑,其实偶尔多回归下技术,沉淀下来,这是博主抽离的mvp架构,本章源码linkhttps://github.com/apple317/AppleMvp,分为mvp_java和mvp_kotlin两个分支版本,网络组件com.applehsp.http:AppleHttpJava:1.0.0,mvp地址依懒com.applehsp.mvp:MvpKotlin:1.0.7,组件化demo例子请看添加链接描述,源demo源码添加链接描述,需要请评论联系博主,麻烦动动手点个星,万分感谢。
1.支持rxjava、RxLifecycle特性
2.支持加载中过渡扩展
3.支持java、kotlin双版本mvp
4.支持多个Presenter共用
5.插拔式的AOP设计理念
6.支持fragement、activity调用
7.支持依懒引入
8.支持androidx、android两个版本

1.Mvp使用说明

1.1 java-mvp库依懒说明

       第一步引入依懒,本库已发到jenter中心,请记得在根工程中添加jenter():
       第二步添加依懒java-mvp版本库
 implementation 'com.applehsp.mvp:MvpJava:1.0.7'

1.2 java-mvp使用说明

public class SplashPresenter extends BasePresenter<SplashView> {
   
    public SplashPresenter() {
   
    }
    /**
     * 广告方法
     * @param message
     */
    public void advertList(String message) {
   
        getView().advertList(message);
    }
}
public interface SplashView extends IBaseView {
   
    void advertList(String advert);
}
public class MainActivity extends BaseMvpActivity implements SplashView, MainView{
   
    @BindView(R.id.btnSync)
    Button btnSync;
    @BindView(R.id.btnAdvert)
    Button btnAdvert;
    //通过注释,通过运行时动态代理p-->v关联,支持多个p注入
    @CreatePresenterAnnotation(SplashPresenter.class)
    SplashPresenter splashPresenter;
    @CreatePresenterAnnotation(MainPresenter.class)
    MainPresenter mainPresenter;

    @Override
    public int setLayoutId() {
   
        return R.layout.activity_main;
    }
    
    @Override
    protected void initData() {
   

    }

    @Override
    protected void initView(Bundle savedInstanceState) {
   
        ButterKnife.bind(this);
    }

    @Override
    public void appSync(String msg) {
   
        btnSync.setText(msg);
    }

    @Override
    public void advertList(String advert) {
   
        btnAdvert.setText(advert);
    }


    @OnClick({
   R.id.btnSync, R.id.btnAdvert})
    public void onViewClicked(View view) {
   
        switch (view.getId()) {
   
            case R.id.btnSync:
                mainPresenter.appSync("首页初始化");
                break;
            case R.id.btnAdvert:
                splashPresenter.advertList("启动页初始化");
                break;
        }
    }
}

1.3 kotlin版本库依懒说明

       第一步引入依懒,本库已发到jenter中心,请记得在根工程中添加jenter():
       第二步添加依懒java-kotlin版本库
implementation 'com.applehsp.mvp:MvpKotlin:1.0.0'
```java

## 1.4 kotlin版本库使用说明

```kotlin
class SplashPresenter : BasePresenter<SplashView>() {
   
    /**
     * 广告方法
     * @param message
     */
    fun advertList(message: String) {
   
        view!!.advertList(message)
    }
}
interface SplashView : IBaseView {
   
    fun advertList(advert: String)
}
class MainActivity : BaseMvpActivity(), SplashView, MainView {
   

    @CreatePresenterAnnotation(SplashPresenter::class)
    var splashPresenter: SplashPresenter? = null
    @CreatePresenterAnnotation(MainPresenter::class)
    var mainPresenter: MainPresenter? = null

    override fun setLayoutId(): Int {
   
        return R.layout.activity_main
    }

    override fun initData() {
   
        btnAdvert.setOnClickListener {
    splashPresenter?.advertList("kotlin 广告") }
        btnSync.setOnClickListener {
    mainPresenter?.appSync("kotlin 同步") }
    }

    override fun appSync
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值