在AsyncTask
内部运行DoInBackground
类成员的方法是否安全?还是需要使用处理程序?
private class MyAsyncTask extends AsyncTask<Void, Void, Void> {
Object mObjA = null:
private MyAsyncTask(Object objA) {
mObjA = objA
}
protected void doInBackground(Void... params) {
mObjA.aMethod()
}
}
如果未将
doInBackground
作为参数传递,则在mObjA.aMethod()
中运行mObjA
是否安全?有多线程问题吗?您应该在
doInBackground
中仅访问已故意传递的对象,还是可以不使用处理程序而自由访问类的任何成员? 最佳答案
实际上,您可以访问AsyncTask
内doInBackground()
的任何字段,条件是mObjA
不是与UI相关的Android类,例如ViewPager
或LinearLayout
或基本上不是任何一种ViewGroup
。