Я пытался выяснить, когда работает мой пользовательский интерфейс, и имел умную идею опубликовать runnable для uiThread, единственным заданием которого было бы установить флаг. Я попытался использовать ключевое словона uiIsRunning
, но eclipse этого не допустит, и я пока этого не понимаю.Как можно Runnable изменить конечную локальную переменную
Но, что удивительно, когда я пробовал код ниже без окончательного модификатора на uiIsRunning
, мне было сказано, что я могу использовать только локальную переменную во встроенном классе, если эта локальная переменная равна final
. Поэтому я сделал uiIsRunning final
и, к моему большому удивлению, Eclipse полностью в порядке с моей линией uiIsRunning = true;
, то есть Eclipse считает, что для меня нормально устанавливать значение переменной final
внутри этого вложенного класса!
Если кто-нибудь может сказать мне, что мне нужно сделать, чтобы получить действие, которое я хочу: установите флаг в false в моем текущем потоке, который затем устанавливается в true, когда поток, который я отправляю для его выполнения, признательна.
final boolean uiIsRunning = false;
uiHandler.post(new Runnable() {
@Override
public void run() {
uiIsRunning = true;
}
});
http://stackoverflow.com/questions/11424753/why-do-variables-passed-to-runnable-need-to-be-final – Geros
Зачем вам использовать локальную переменную для нескольких потоков? – Hartok
Вы не можете. Код не компилируется. Не настоящий вопрос. – EJP