Android AsyncTaskLoader forceLoad,Kotlin(5)
import android.content.Context
import androidx.loader.app.LoaderManager
import android.os.Bundle
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.loader.content.AsyncTaskLoader
import androidx.loader.content.Loader
class MainActivity : AppCompatActivity() {
companion object {
const val TAG = "fly"
}
//private val loaderId = 2024
//private var manager: LoaderManager? = null
private var mLoader: MyLoader? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
/*
val ctx = this
manager = LoaderManager.getInstance(this)
manager?.initLoader(loaderId, Bundle(), object : LoaderManager.LoaderCallbacks<MyData> {
override fun onCreateLoader(id: Int, args: Bundle?): Loader<MyData> {
val loader = MyLoader(ctx)
Log.d(TAG, "onCreateLoader $id")
return loader
}
override fun onLoaderReset(loader: Loader<MyData>) {
Log.d(TAG, "onLoaderReset ${loader.id}")
}
override fun onLoadFinished(loader: Loader<MyData>, data: MyData?) {
Log.d(TAG, "onLoadFinished ${loader.id} $data")
}
})
*/
mLoader = MyLoader(this)
}
override fun onResume() {
super.onResume()
mLoader?.forceLoad()
}
override fun onPause() {
super.onPause()
//manager?.getLoader<MyData>(loaderId)?.cancelLoad()
}
override fun onDestroy() {
super.onDestroy()
//manager?.destroyLoader(loaderId)
}
class MyLoader(ctx: Context) : AsyncTaskLoader<MyData>(ctx) {
override fun onContentChanged() {
super.onContentChanged()
Log.d(TAG, "onContentChanged")
}
override fun onStartLoading() {
super.onStartLoading()
Log.d(TAG, "onStartLoading")
}
override fun forceLoad() {
super.forceLoad()
Log.d(TAG, "forceLoad")
}
override fun loadInBackground(): MyData {
val d = MyData("${System.currentTimeMillis()}")
Log.d(TAG, "loadInBackground @ $d")
return d
}
//工作在主线程。data是loadInBackground()返回的值。
override fun deliverResult(data: MyData?) {
super.deliverResult(data)
Log.d(TAG, "deliverResult ${data?.value}")
}
}
data class MyData(val value: String)
}
启动后:
D forceLoad
D loadInBackground @ MyData(value=1729994515174)
D deliverResult 1729994515174