Это кажется довольно старым вопросом, но я думаю, что вот что происходит:
Я предполагаю, что он хочет быть осторожным, когда возвращаются "диалоги".В примере BluetoothChat используются диалоговые окна (а также действия, подобные наложенным диалоговым окнам), для включения Bluetooth, включения обнаружения и инициирования сопряжения / подключений.
Я точно не знаю, но подозреваю, что произошла ошибкагде разные потоки возвращались к основному действию и вызывали путаницу в отношении того, как обрабатывать onResume
.
Что они, вероятно, должны были сделать, это synchronize
блок объекта и использование флагов для определения состояния.Таким образом, намерение, состояние и функциональность более понятны - и приложение знает, что оно должно делать в onResume
;
, что-то вроде этого может быть:
//class fields
private Object myLockObj = new Object();
private boolean isPausedForPairing = false;
public void onResume()
{
super.onResume();
synchronized (myLockObj)
{
if (isPausedForPairing)
{
//handle a "pairing" onResume
}
}
}
Однако из-заБудучи примером приложения, они, возможно, решили пойти с чем-то более простым.Примеры приложений не всегда следуют соглашению, потому что идея состоит в том, чтобы продемонстрировать конкретный код, необходимый для примера.Иногда следующее соглашение может добавить много «отвлекающего» кода.Согласны ли вы с этим, зависит только от вас.