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中仅访问已故意传递的对象,还是可以不使用处理程序而自由访问类的任何成员?

最佳答案

实际上,您可以访问AsyncTaskdoInBackground()的任何字段,条件是mObjA不是与UI相关的Android类,例如ViewPagerLinearLayout或基本上不是任何一种ViewGroup

08-17 09:17