在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:Brick开源软件地址:https://gitee.com/numeron/brick开源软件介绍:Brick多模块示例android工程:https://github.com/xiazunyang/Wandroid.git 介绍辅助android开发者搭建基于JetPack组件构建MVVM框架的注解处理框架。通过注解自动生成ViewModel的Factory类、lazy方法等;支持在项目的任意位置注入ROOM的dao层接口与Retrofit库中的api接口。 特点
适用范围
引入
buildscript { ... repositories { ... maven { url 'https://jitpack.io' } } dependencies { classpath 'com.gitee.numeron.brick:plugin:0.3.4' }}allprojects { repositories { ... maven { url 'https://jitpack.io' } }}
apply plugin: 'com.android.application'...//添加下面这行apply from: 'https://gitee.com/numeron/brick/raw/master/brick.gradle'
apply from: '../brick.gradle' 注:第2步和第3步任选其一即可配置brick。 使用一、 @Provide注解的使用方法:
@Provideclass WxAuthorViewModel: ViewModel() { ...}
private val wxAuthorViewModel by lazyWxAuthorViewModel() 或在 private lateinit var wxAuthorViewModel: WxAuthorViewModeloverride fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) wxAuthorViewModel = getWxAuthorViewModel(this)} 二、 @Inject注解的使用方法-2. (必需) 在获取 @RetrofitInstanceval retrofit: Retrofit by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { Retrofit.Builder() .client(okHttpClient) .baseUrl(WANDROID_BASE_URL) .addConverterFactory(MoshiConverterFactory.create()) .build()}val okHttpClient: OkHttpClient by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { val logInterceptor = HttpLoggingInterceptor() logInterceptor.level = HttpLoggingInterceptor.Level.BODY OkHttpClient.Builder() .addInterceptor(logInterceptor) .callTimeout(15, TimeUnit.SECONDS) .readTimeout(60, TimeUnit.SECONDS) .writeTimeout(60, TimeUnit.SECONDS) .connectTimeout(15, TimeUnit.SECONDS) .build()} 注: -1. (可选) 在获取 @RoomInstanceval wandroidDatabase: WandroidDatabase by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { Room.databaseBuilder(CONTEXT, WandroidDatabase::class.java, "wandroid.db") .build()} 注:
interface WxAuthorApi { @GET("wxarticle/chapters/json ") suspend fun getWxAuthorList(): List<WxAuthor>}class WxAuthorRepo { ...}
class WxAuthorRepo { @Inject lateinit var wxAuthorApi: WxAuthorApi}
@Provideclass WxAuthorViewModel: ViewModel() { @Inject private lateinit var wxAuthorRepo: WxAuthorRepo} 标记后,继续编写业务代码即可,所有被 三、 多服务器或多端口的处理方法:假设有另一个Retrofit api接口,它的访问地址或端口与
@Port(1080)interface ArticleApi { @GET("wxarticle/list/{chapterId}/{page}/json") suspend fun getArticleList(@Path("chapterId") chapterId: Int, @Path("page") page: Int): Paged<Article>} 添加此注解后,brick会在编译期根据
@Url("http://www.wanandroid.com:1080/")interface ArticleApi { @GET("wxarticle/list/{chapterId}/{page}/json") suspend fun getArticleList(@Path("chapterId") chapterId: Int, @Path("page") page: Int): Paged<Article>} 与 |
请发表评论