AsyncTask in Android with Kotlin

前端 未结 10 1528
离开以前
离开以前 2020-12-13 12:31

How to make an API call in Android with Kotlin?

I have heard of Anko . But I want to use methods provided by Kotlin like in Android we have Asynctask for background

10条回答
  •  我在风中等你
    2020-12-13 12:54

    I spent a full day trying to figure how to get back the result produced by an Async Task : co-routines was my solution !!!

    First, create your AsyncTask Object ... Do not forget to use corrects parameter type instead all Any

    @SuppressLint("StaticFieldLeak")
    class AsyncTaskExample(private var activity: MainActivity?) : AsyncTask() {
    
        override fun onPreExecute() {
            super.onPreExecute()
            // do pre stuff such show progress bar
        }
    
        override fun doInBackground(vararg req: Any?): Any? {
    
            // here comes your code that will produce the desired result
            return result 
    
        }
    
        // it will update your progressbar
        override fun onProgressUpdate(vararg values: Int?) {
            super.onProgressUpdate(*values)
    
        }
    
    
        override fun onPostExecute(result: Any?) {
            super.onPostExecute(result)
    
            // do what needed on pos execute, like to hide progress bar
            return
        }
    
    }
    

    and Then, call it ( in this case, from main activity )

    var task = AsyncTaskExample(this)
    var req = { "some data object or whatever" }
    
    GlobalScope.launch( context = Dispatchers.Main){
    
       task?.execute(req)
    }
    
    GlobalScope.launch( context = Dispatchers.Main){
    
       println( "Thats the result produced by doInBackgorund: " +  task?.get().toString() )
    }
    

提交回复
热议问题