# VMNetFramework **Repository Path**: greenzbr/VMNetFramework ## Basic Information - **Project Name**: VMNetFramework - **Description**: 纯kotlin 结合 retrofit + okhttp + viewModel + liveData 实现的开发模式加网络框架 - **Primary Language**: Kotlin - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2019-02-19 - **Last Updated**: 2023-10-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # VMNetFramework #### 介绍 纯kotlin 结合 retrofit + okhttp + liveData + ViewModel 实现的开发模式加网络框架 #### 软件架构 采用activity、fragment 和 liveData 绑定的模式发起网络请求,并且业务逻辑部分写在viewModel 中,网络请求使用retrofit,异步线程使用的是kotlin的协程的方式去实现的。 #### 使用说明 接收回调方式 及调用方式 private lateinit var cityViewModel: CityViewModel override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) cityViewModel = createViewModel() getCity.setOnClickListener { cityViewModel.queryCityData() } jumpTest.setOnClickListener { cityViewModel.queryCity1Data() } } private fun createViewModel() : CityViewModel { return LViewModelProviders.of(this, CityViewModel::class.java).apply { oneLiveData.observe(this@MainActivity, Observer { println("wo shi shen 请求回来") tvContent.text = "第一个${Gson().toJson(it)}" }) twoLiveData.observe(this@MainActivity, Observer { println("wo shi shen 请求回来") tvContent.text = "第二个${Gson().toJson(it)}" }) errorLiveData.observe(this@MainActivity, Observer { if(it == true){ Toast.makeText(this@MainActivity, "服务异常", Toast.LENGTH_SHORT).show() } else { Toast.makeText(this@MainActivity, "网络异常", Toast.LENGTH_SHORT).show() } }) } } viewModel 代码如下 val oneLiveData: MutableLiveData by lazy { MutableLiveData() } val twoLiveData: MutableLiveData by lazy { MutableLiveData() } val errorLiveData: MutableLiveData by lazy { MutableLiveData() } fun queryCityData() { call { queryData(getDService().queryCity("1", "1.1.0"), object : RequestMultiplyCallback { override fun onFail(e: BaseException) { errorLiveData.value = e is ConnectionException } override fun onSuccess(t: TestData) { oneLiveData.value = t } },true) } } fun queryCity1Data() { call { queryData(getDService().queryCity("1", "1.1.0"), object : RequestCallback { override fun onSuccess(t: TestData) { twoLiveData.value = t } }) } }