一款基于google官方推荐架构体系封装和Jetpack的MVVM框架。致力于写出最精简,易读性又高的代码,又保证项目的健壮性。 项目正在搭建中,如果喜欢的话不妨点个star~
-
Kotlin+ Coroutines+KTX
-
JetPack
- Dagger-Hilt-用于依赖注入(ViewModel,Responese,ApiService)
- LiveData
- Lifecycle
- ViewModel
-
Retrofit2 & OkHttp3 -retrofit2.9.0搭配协程
-
Arouter -跨模块通信框架
-
Logger - Simple, pretty and powerful logger for android
-
BaseRecyclerViewAdapterHelper - 强大而灵活的RecyclerView Adapter
-
Gson,Kotson- 更简易的Gson使用 val userInfo: User="user json".toObject()
@AndroidEntryPoint //注解的入口
class TopArticleActivity : BaseActivity() {
private val topArticleViewModel: TopArticleViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_top_article)
initView()
topArticleViewModel.fetchTopArticle()
}
}
@ViewModelInject constructor(private val articleRepository: ArticleRepository)依赖注入声明,会自动生成TopArticleViewModel_AssistedFactory,注入ArticleRepository
class TopArticleViewModel @ViewModelInject constructor(private val articleRepository: ArticleRepository) :
ViewModel() {
val articleList = MutableLiveData<MutableList<TopArticle>>()
fun fetchTopArticle() {
launchOnUI {
val response = articleRepository.fetchTopArticle()
response.whenSuccess {
articleList.value = it.toMutableList()
}
}
}
}
@Singleton
class ArticleRepository @Inject constructor(private val wanApiService: WanApiService) :
BaseRepository() {
suspend fun fetchTopArticle(): NetResult<List<TopArticle>> {
return fetchApi { wanApiService.topArticle() }
}
}
@InstallIn(SingletonComponent::class)
@Module
object WanNetModule {
@Provides
@Singleton
fun provideService(): WanApiService = RetrofitManager.getApiService(
WanApiService::class.java) //提供WanApiService单例,只需要写一次
}