到这一节,基本上把大部分kotlinandroid的开发都已经介绍完成了,通过了前面和这一章的框架结构,基本上能解决开发中的很多问题,并且能够知道android的主要的技术,并进行独立开发了。对于传统的开发的话,还差网络和一个简单的框架。

在这里插入图片描述

Retrofit的使用

对于大部分的内容app来说,大概的主要流程是先从服务器中获取逻辑和要展现的数据,通过接口解析这一部分的数据,并展示在手机上。

因此对于获取网络接口的数据,在这类app中显得非常的重要。网络框架的稳定性已否,对一个app的稳定性来说是非常关键的。因此我们也使用了通用的网络框架。

Rxjava + Retrofit框架

定义api的方法和地址:

interface Api {

    @GET("http://www.weather.com.cn/data/sk/{cityCode}.html")
    fun getWeather(@Path("cityCode")code:String):Observable<WeatherInfo>
}

初始化 retrofitBuilder ,让他提供一个可用的Retrofit

           if (retrofitBuilder == null){
            val client = OkHttpClient.Builder().connectTimeout(20,TimeUnit.SECONDS)
                .readTimeout(20,TimeUnit.SECONDS)
                .writeTimeout(20,TimeUnit.SECONDS)
                .build()

            retrofitBuilder = Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .client(client)


        }

这里我们的网络采用的是OkHttpClient,和Retrofit 配合的非常的完美。

请求接口数据,并在控件中显示:

        RetrofitHelper.getRetrofit().create(Api::class.java).getWeather("101010100")
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(object :Observer<WeatherInfo>{
                override fun onSubscribe(d: Disposable) {
                    addDisposable(d)
                }

                override fun onNext(t: WeatherInfo) {
                    weatherLiveData.value = t
                }

                override fun onError(e: Throwable) {
                    TODO("Not yet implemented")
                }

                override fun onComplete() {

                }

            })

注意这里的subscribeOnobserveOn 相当于在不同的线程间做各种事情,subscribe 当出现了数据以后,把数据传递出来。

在view中显示:

 viewModel.weatherLiveData.observe(this, Observer {
            tvWeather?.text = it.toString()
        })
mvp框架

我们这里的这个框架确实是非常简单的,把它分为两部分一部分是model,一部分是viewmodel 用来做数据的处理,而view 用来做显示,这样就可以把数据和界面分开,这就是一种编程思想,一个框架。
虽然现在有很多的不同框架,但是大部分都是这样思路,就是解耦,这样整个程序看起来会非常的清晰。

小结

基础知识就是这些,如果想更多的接触一些android开发的知识,建议去找几个开源的代码,自己做一两个的app,基本上就能掌握app的开发了。

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐