Cómo devolver el resultado en doInBackground después de que finalice el bloque de finalización de la API de inicio de session en UserLoginTask

Utilicé LoginActivity por defecto en Android Studio y creé una vista de inicio de session simple. En mi aplicación, la tarea de authentication y la generación de token de acceso la realiza el server a través de una llamada API. Sin embargo, dado que la llamada api debe tener un bloque de finalización, mi function de inicio de session en doInBackground también lo hace. Por lo tanto, el resultado de authentication existe en el hilo del bloque de finalización, lo que hace que el resultado devuelto del doInBackground original en doInBackground onPostExecute incorrecto. Las funciones son anuladas, así que no puedo cambiar sus parameters y formattings. Todavía soy nuevo en el desarrollo de Android y todavía no estoy muy familiarizado con su tarea asincrónica, por lo que me gustaría preguntar si hay alguna forma de detenerse en doInBackground y esperar el resultado en el bloque de finalización. ¿O hay alguna solución mejor para resolver mi inicio de session API? Gracias.

Aquí el código de mi UserLoginTask (escrito en kotlin pero creo que el concepto sería el mismo con Java):

 inner class UserLoginTask internal constructor(private val mUsername: String, private val mPassword) : AsyncTask<Void, Void, Boolean>() { override fun doInBackground(vararg params: Void?): Boolean? { var result = false try { Thread.sleep(2000) } catch(e: InterruptedException) { return false } MyLoginService().login(mUsername, mPassword, onCompleted = { token -> // I want to get the login result from here and return it to onPostExecute // It's no use if I change the result to true here because the result is already returned before completion. }) return result } override fun onPostExecute(success: Boolean?) { mAuthTask = null showProgress(false) if(success!!) { finish() } else { mPasswordView!!.error = getString(R.string.error_incorrect_password) mPasswordView!!.requestFocus() } } override fun onCancelled() { mAuthTask = null showProgress(false) } }