Почему lockStatic неустойчив в Android?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Почему lockStatic неустойчив в Android?

Сообщение Anonymous »

Я пытаюсь понять эту реализацию Android, но я просто не могу понять, почему статическое поле lockStatic является изменчивым, поскольку его использование осуществляется только через метод getLock и это синхронизированный блок, поэтому не должно быть никакого параллелизма или проблемы с публикацией объектов.

Код: Выделить всё

abstract public class WakefulIntentService extends IntentService {
abstract protected void doWakefulWork(Intent intent);
static final String NAME=
"com.commonsware.cwac.wakeful.WakefulIntentService";
static final String LAST_ALARM="lastAlarm";

private static volatile PowerManager.WakeLock lockStatic=null;

synchronized private static PowerManager.WakeLock getLock(Context context) {
if (lockStatic == null) {
PowerManager mgr = (PowerManager)context.getSystemService(Context.POWER_SERVICE);

lockStatic=mgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, NAME);
lockStatic.setReferenceCounted(true);
}

return(lockStatic);
}
Я считаю, что если бы lockStatic был разрешен доступ каким-либо другим способом, то была бы необходимость только во волатильности, но его частным и единственным методом, который имеет дело с этим, является метод getLock. Это просто утверждение или за этим стоят другие причины?
Заранее благодарим за любую помощь в решении этого вопроса.
WeakfullIntentService

Подробнее здесь: https://stackoverflow.com/questions/407 ... in-android
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»