项目作者: PanPersonalProject

项目描述 :
mvvm+jetpack+hilt+retrofit+corotines+arouter
高级语言: Kotlin
项目地址: git://github.com/PanPersonalProject/BaseAndroidFramework.git
创建时间: 2020-06-03T03:33:19Z
项目社区:https://github.com/PanPersonalProject/BaseAndroidFramework

开源协议:

下载


BaseAndroidFramework


一款基于google官方推荐架构体系封装和Jetpack的MVVM框架。致力于写出最精简,易读性又高的代码,又保证项目的健壮性。
项目正在搭建中,如果喜欢的话不妨点个star~

主要技术栈

  • Kotlin+ Coroutines+KTX
  • JetPack

    • Dagger-Hilt-用于依赖注入(ViewModel,Repository,ApiService)
    • LiveData
    • Lifecycle
    • ViewModel
  • TheRouter -跨模块通信框架

  • Retrofit2 & OkHttp4 -Retrofit2.11.0搭配协程
  • Scarlet & Rxjava -Retrofit风格的WebSocket client
  • Logger - Simple, pretty and powerful logger for android

  • Kotson- 更简易的Gson使用 val userInfo: User=”user json”.toObject()


HTTP请求Example

  1. @AndroidEntryPoint //注解的入口
  2. class TopArticleActivity : BaseActivity() {
  3. private val topArticleViewModel: TopArticleViewModel by viewModels()
  4. override fun onCreate(savedInstanceState: Bundle?) {
  5. super.onCreate(savedInstanceState)
  6. setContentView(R.layout.activity_top_article)
  7. initView()
  8. topArticleViewModel.fetchTopArticle()
  9. }
  10. }

@ViewModelInject依赖注入声明,会自动生成TopArticleViewModel_AssistedFactory,注入ArticleRepository

  1. class TopArticleViewModel @ViewModelInject constructor(private val articleRepository: ArticleRepository) :
  2. ViewModel() {
  3. val articleList = MutableLiveData<MutableList<TopArticle>>()
  4. fun fetchTopArticle() {
  5. launchOnUI {
  6. val response = articleRepository.fetchTopArticle()
  7. response.whenSuccess {
  8. articleList.value = it.toMutableList()
  9. }
  10. }
  11. }
  12. }
  1. @Singleton
  2. class ArticleRepository @Inject constructor(private val wanApiService: WanApiService) :
  3. BaseRepository() {
  4. suspend fun fetchTopArticle(): NetResult<List<TopArticle>> {
  5. return fetchApi { wanApiService.topArticle() }
  6. }
  7. }
  1. @InstallIn(SingletonComponent::class)
  2. @Module
  3. object WanNetModule {
  4. @Provides
  5. @Singleton
  6. fun provideService(): WanApiService = RetrofitManager.getApiService(
  7. WanApiService::class.java) //提供WanApiService单例,只需要写一次
  8. }


WebSocket请求Example

声明接口

  1. interface DemoWebsocketService {
  2. @Send
  3. fun send(protocol: Protocol)
  4. @Receive
  5. fun observeCustomInfo(): Flowable<Result>
  6. @Receive
  7. fun observeWebSocketEvent(): Flowable<WebSocket.Event>
  8. @Send
  9. fun send(msg: String)
  10. }

初始化WSManager

  1. val wsManager: WSManager<DemoWebsocketService> = WSManager()

发送消息

  1. wsManager.service.send(message)

接收消息

  1. wsManager.service.observeCustomInfo().subscribe {
  2. receivedMessages.postValue(it.message)
  3. }

架构图