Доступ или изменение переменной экземпляра в AsyncTask - PullRequest
1 голос
/ 04 февраля 2012

Предположим, у меня внутренний класс расширяет асинхронную задачу с именем A, а внешний класс расширяет действие B. Потокобезопасен ли код в A для доступа или изменения переменной экземпляра в Деятельности B?

Ответы [ 2 ]

1 голос
/ 04 февраля 2012

Нет, , AsyncTask запускается в отдельном потоке , поэтому вам придется выполнять обычную синхронизацию потоков, если состояние общего ресурса Activity и AsyncTask (в данном случае переменные экземпляра), пока AsyncTask работает.

Как правило, чтобы упростить процесс, вы реализуете onPublishProgress() и onPostExecute() для публикации состояния из AsyncTask в Activity, поскольку оба метода публикуются взапустить в потоке пользовательского интерфейса.

1 голос
/ 04 февраля 2012

Если вы обращаетесь к экземпляру напрямую без synchronize, то нет, код не поточно-безопасный.Вы должны использовать synchronize для этого или просто получить доступ к экземпляру из onPublishProggress() метода AsyncTask.

...