Всем известно, что когда вы манипулируете с помощью базы данных, вы должны сделать это в другом Thread
. Но я не понимаю, что это действительно необходимо, когда вы просто вставляете один элемент, например, или когда это происходит, когда пользователь открывает Activity
или Fragment
, и данные просто загружаются из базы данных, которую пользователь будет ждать загрузки, заканчивая что угодно. Возможно, он даже немного приостанавливает приложение, создавая новый поток. Как вы думаете, что «должно быть» для создания новых тем?Android еще одна тема
ответ
Поток должен использоваться в длительном процессе, который блокирует пользовательский интерфейс от обновления. Если вам понадобится больше секунды или два, вы можете поместить его в фоновый поток и уведомить пользователя с помощью диалога или счетчика или чего-то еще. Если вы заблокируете поток пользовательского интерфейса более 5 секунд, пользователю будет предложена опция «убить» или «ждать» ОС.
Чтобы иметь хороший пользовательский опыт, тяжелые работы должны выполняться в другом потоке, таким образом, нет никаких задержек или блоков, а пользовательский интерфейс лучше.
Время, затрачиваемое на создание нового потока, намного меньше времени, затраченного на выполнение запроса или запроса HTTP или других тяжелых работ. Возможно, на вашем телефоне это короткое время, но на телефоне низкого уровня может потребоваться больше времени. После 5s Android показывает пользователю аллерт, чтобы спросить, хочет ли пользователь убить приложение или ждать, это не хорошо.
Другое дело, что пользователь должен ждать данные, чтобы использовать его, но если вы выполняете запрос в основном потоке, просмотр будет заблокирован, если вы сделаете это в другом потоке, то просмотр будет плавным, вы можете легко показать прогресс бар, и если пользователь хочет вернуться назад, приложение все еще реагирует.
Я могу понять, что отправлять сообщения beetwen потоков не так просто, как это сделать в основном потоке, но если вы используете автобус, как OTTO автобус (http://square.github.io/otto/) и расширить класс шины таким образом
общественный класс AndroidBus распространяется автобус {
private final Handler mainThread = new Handler(Looper.getMainLooper());
@Override
public void post(final Object event) {
if (Looper.myLooper() == Looper.getMainLooper()) {
super.post(event);
} else {
mainThread.post(new Runnable() {
@Override
public void run() {
post(event);
}
});
}
}
}
Таким образом, и можно Исло отправлять сообщения beetwen потоков
- 1. еще одна тема о volatile
- 2. Еще одна тема «нецентрировать контент»
- 3. Еще одна тема автозаполнения jQuery
- 4. generate Еще одна тема в Python
- 5. Pygame еще одна тема не получает событие QUIT?
- 6. mongodb: еще одна тема «как добавить случайную запись»
- 7. Android - Тема ошибки и кнопка еще интерактивными
- 8. Тема, создающая еще Темы
- 9. LDA Mahout только одна тема
- 10. Windows phone silverlight одна тема
- 11. Только одна тема за раз!
- 12. Только одна тема запускает python
- 13. iPhone: один объект, одна тема
- 14. Еще одна проблема CORS?
- 15. еще одна проблема win32
- 16. Еще одна логика
- 17. Еще одна проблема MessageSecurityException
- 18. Еще одна Java OutOfMemoryError
- 19. Возможна еще одна скорость?
- 20. Еще одна жертва .htaccess
- 21. Еще одна ошибка Linker
- 22. еще одна проблема QMAKE_CXXFLAGS
- 23. Может ли одна тема общаться с другим?
- 24. Android полупрозрачная тема
- 25. Еще одна неопределенная ссылка ошибки
- 26. (еще одна) ошибка «Освобожденный модуль»
- 27. Еще одна проблема с Microsoft.SqlServer.Management.Smo.Transfer
- 28. Еще одна проблема с шаблонами
- 29. Еще одна обучающая Java-головоломка
- 30. Еще одна LinkedHashSet .equals dilema
Если ваш основной поток остается занятым в другом месте и не обслуживает новые обновления экрана пользовательского интерфейса, пользовательский интерфейс будет заикаться. Кроме того, если Android обнаруживает, что UI замерзает слишком много (скажем, более 5 секунд), система будет показывать ошибку ANR (приложение не отвечает). Итак, оставьте основной поток свободным для обслуживания пользовательского интерфейса. –