Предположим, у меня внутренний класс расширяет асинхронную задачу с именем A, а внешний класс расширяет действие B. Потокобезопасен ли код в A для доступа или изменения переменной экземпляра в Деятельности B?
Нет, , AsyncTask запускается в отдельном потоке , поэтому вам придется выполнять обычную синхронизацию потоков, если состояние общего ресурса Activity и AsyncTask (в данном случае переменные экземпляра), пока AsyncTask работает.
Как правило, чтобы упростить процесс, вы реализуете onPublishProgress() и onPostExecute() для публикации состояния из AsyncTask в Activity, поскольку оба метода публикуются взапустить в потоке пользовательского интерфейса.
onPublishProgress()
onPostExecute()
Если вы обращаетесь к экземпляру напрямую без synchronize, то нет, код не поточно-безопасный.Вы должны использовать synchronize для этого или просто получить доступ к экземпляру из onPublishProggress() метода AsyncTask.
synchronize
onPublishProggress()
AsyncTask