package com.doumee.lib_coremodel.base; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.room.Room; import androidx.room.RoomDatabase; import com.doumee.lib_coremodel.config.Constants; import com.doumee.lib_coremodel.data.IDataRepository; import javax.inject.Inject; /** * * MVVMFrame 框架基于Google官方的 JetPack 构建,在使用MVVMFrame时,需遵循一些规范: * * 如果您继承使用了BaseModel或其子类,你需要参照如下方式在构造函数上添加@Inject注解 * * @example BaseModel * //------------------------- * public class YourModel extends BaseModel { * @Inject * public BaseModel(IDataRepository dataRepository){ * super(dataRepository); * } * } * //------------------------- * * * 标准MVVM模式中的M (Model)层基类 * @author Jenly */ public class BaseModel implements IModel { private IDataRepository mDataRepository; @Inject public BaseModel(IDataRepository dataRepository){ this.mDataRepository = dataRepository; } @Override public void onDestroy() { mDataRepository = null; } /** * 传入Class 获得{@link retrofit2.Retrofit#create(Class)} 对应的Class * @param service * @param * @return {@link retrofit2.Retrofit#create(Class)} */ public T getRetrofitService(Class service){ return mDataRepository.getRetrofitService(service); } /** * 传入Class 通过{@link Room#databaseBuilder},{@link RoomDatabase.Builder#build()}获得对应的Class * @param database * @param * @return {@link RoomDatabase.Builder#build()} */ public T getRoomDatabase(@NonNull Class database){ return getRoomDatabase(database, Constants.DEFAULT_DATABASE_NAME); } /** * 传入Class 通过{@link Room#databaseBuilder},{@link RoomDatabase.Builder#build()}获得对应的Class * @param database * @param dbName * @param * @return {@link RoomDatabase.Builder#build()} */ public T getRoomDatabase(@NonNull Class database, @Nullable String dbName){ return mDataRepository.getRoomDatabase(database,dbName); } }