Java refactoring

Aug 19, 2010 14:14

Если вам не лень залезть под кат, прокомментируйте пожалуйста мои эксперименты.
Вопрос про то, как правильно пользоваться анонимными классами в Java )

программистское

Leave a comment

Comments 5

iordane August 19 2010, 11:36:18 UTC
1)
Log.d(_TAG, "tryDisableEnable(): " + _wifiManager.getWifiState());
return _wifiManager.getWifiState() == WifiManager.WIFI_STATE_DISABLED;

нет гарантии, что результаты _wifiManager.getWifiState() будут одинаковы в первой и второй строчке

2)

for (int i = 0; i < 5; i++) {
Thread.sleep(500);
}
не обязательно займет не 2500ms.

Reply

alexcohn August 19 2010, 12:41:49 UTC
спасибо!

1. Плевать: если вернули ОК, то мне плевать, что напечатано в логе... В конце концов Log.d() будет отключен вообще.

2. Тоже плевать: время явно оценивается очень приблизительно. Я знаю, что нет смысла ждать более полминуты. Если я получу таймаут через 20 секунд, или 40 секунд - ничего не изменится.

Reply


anonymous August 19 2010, 13:02:39 UTC
busy-wait - зло. почему бы не зарегистрироваться на получение бродкаста WIFI_STATE_CHANGED_ACTION? (я не знаю, подходит ли это в данном случае, я только начинаю разбираться в андроиде).

Reply

alexcohn August 19 2010, 13:55:44 UTC
Хороший вопрос. Потому что замучаешься разбивать линейную логику на десяток фрагментов и строить state machine чтобы выполнять по получнии события очередную порцию действий. Потому что мне нужно следить и за изменениями, которые вообще никакого бродкаста не генерируют. Потому что тогда совсем нет шансов понять, что время ожидания вышло, и пора прикрывать лавочку. И кому об этом сообщать.

А чем уж так уж бесконечно плох цикл с Thread.sleep() посередине?

Reply

anonymous August 19 2010, 16:34:26 UTC
» следить и за изменениями, которые вообще никакого бродкаста не генерируют
вот это беда, да, а остальное не очень беда.
чем плохо? да ничем таким особенным не плохо. не масштабируется только.

Reply


Leave a comment

Up