Android高级 组件化

组件化
ARouter

gradle.properties

#配置全局的环境
compile_SdkVersion = 28
min_SdkVersion = 20
target_SdkVersion = 28

#配置组件是否单独运行
loginRunAlone = false
mineRunAlone = false

LoginComponent的Gradle配置

if (loginRunAlone.toBoolean()) {
    apply plugin: 'com.android.application'
} else {
    apply plugin: 'com.android.library'
}

android {
    compileSdkVersion compile_SdkVersion.toInteger()

    defaultConfig {
        if (loginRunAlone.toBoolean()) {

            applicationId "com.example.logincomponent"
        }
        minSdkVersion min_SdkVersion.toInteger()
        targetSdkVersion target_SdkVersion.toInteger()
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

    }

    //独立运行和集成
    sourceSets {
        main {
            if (loginRunAlone.toBoolean()) {
                manifest.srcFile "src/main/manifest/AndroidManifest.xml"
            } else {
                manifest.srcFile "src/main/AndroidManifest.xml"
            }
        }
    }


    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:28.0.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.3'
    implementation 'com.android.support:support-v4:28.0.0'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation project(':componentlib')
}

Main App的初始化

package com.example.ljp.zujian;

import android.app.Application;

import com.example.componentlib.AppCompat;
import com.example.componentlib.ServiceFactory;

public class MainApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        for (String s : ServiceFactory.getServiceFactory().getAppComponent()) {
            try {
                Class c = Class.forName(s);
                Object o = c.newInstance();
                if (o instanceof AppCompat) {
                    ((AppCompat) o).init(this);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

Base Library的业务处理

package com.example.componentlib;

public class ServiceFactory {

    private static ServiceFactory serviceFactory = new ServiceFactory();

    private String[] appComponent = {
            "com.example.logincomponent.LoginApplication",
            "com.example.minecomponent.MineApplication"
    };

    private ILoginService loginService;
    private IMineService mineService;

    public static ServiceFactory getServiceFactory() {
        return serviceFactory;
    }

    public IMineService getMineService() {
        if (null == mineService) {
            return new EmptyService();
        }
        return mineService;
    }

    public void setMineService(IMineService mineService) {
        this.mineService = mineService;
    }

    public ILoginService getLoginService() {
        if (null == loginService) {
            return new EmptyService();
        }
        return loginService;
    }

    public void setLoginService(ILoginService loginService) {
        this.loginService = loginService;
    }

    public String[] getAppComponent() {
        return appComponent;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值