在使用AsyncTaskTarget时,可以通过手动传递Context实例来获取范围属性。代码示例如下:
class MyAsyncTask : AsyncTask() {
private lateinit var context: Context
fun bindContext(context: Context) {
this.context = context
}
override fun doInBackground(vararg params: Unit?) {
val myProperty = (context.applicationContext as MyApplication).myProperty
// ...
}
// ...
}
在Activity或Fragment中使用时,可以在onCreate或onViewCreated等生命周期方法中,将实例传递给MyAsyncTask:
class MyFragment : Fragment() {
private val myAsyncTask = MyAsyncTask()
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
myAsyncTask.bindContext(requireContext())
myAsyncTask.execute()
}
// ...
}
通过手动传递Context实例,就可以在AsyncTaskTarget中获取范围属性了。