Kotlin Retrofit中是否有一种方法与Kotlin AsyncTask的OnPreExecute等效?

问题描述 投票:0回答:2

我有一个MainActivity.kt类提供的NetworkConfig.kt呼叫服务(我是Android开发的初学者)。>>

MainActivity.kt

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        NetworkConfig().getService()
            .getUsers()
            .enqueue(object : Callback<List<UserDataClassItem>> {

                override fun onFailure(call: Call<List<UserDataClassItem>>, t: Throwable) {
                    Toast.makeText(this@MainActivity, "No Connection. Check your Connectivity", Toast.LENGTH_SHORT).show()
                }

                override fun onResponse(
                    call: Call<List<UserDataClassItem>>,
                    response: Response<List<UserDataClassItem>>
                ) {
                    rvUser.adapter = UserAdapter(response.body())
                }
            })
    }
}

NetworkConfig.kt

class NetworkConfig {
    // set interceptor
    private fun getInterceptor() : OkHttpClient {
        val logging = HttpLoggingInterceptor()
        logging.level = HttpLoggingInterceptor.Level.BODY

        return OkHttpClient.Builder()
            .addInterceptor(logging)
            .build()
    }

    private fun getRetrofit() : Retrofit {
        return Retrofit.Builder()
            .baseUrl("https://jsonplaceholder.typicode.com/")
            .client(getInterceptor())
            .addConverterFactory(GsonConverterFactory.create())
            .build()
    }

    fun getService() = getRetrofit().create(Users::class.java)
}


//Access https://jsonplaceholder.typicode.com/users
interface Users {
    @GET("users")
    fun getUsers(): Call<List<UserDataClassItem>>
}

我想知道的是,当应用程序在后台获取服务时(例如显示progressBar),Retrofit中是否有一种方法可以执行任务?等效于AsyncTask的onPreExecute函数的东西。

如果有不清楚的地方,请告诉我。

我有一个MainActivity.kt,该调用服务由NetworkConfig.kt类提供(我是Android开发的初学者)。 MainActivity.kt类MainActivity:AppCompatActivity(){覆盖...

android kotlin retrofit
2个回答
0
投票

在网络通话之前,您可以将ProgressBar可见性设置为View.VISIBLE,然后在翻新版的onResponse()onFailure()中将其可见性设置为View.GONE


0
投票

改造队列将以异步方式执行

© www.soinside.com 2019 - 2024. All rights reserved.