Pull to refresh

Comments 14

[offtop]
Отладка в эмуляторе подобна смерти

Не знаю, что у вас на кoмпе с железом, но я на свой не cамый топовый ноут поставил Genymotion — скорость на уровне среднего на рынке устройства (реально, работает почти не хуже моего xiaomi mi2a). И приложение на эмулятор деплоится намного быстрее, чем по юсб на смарт, не говоря уже о Wi-Fi
[/offtop]
Я, конечно же, имел в виду стандартный эмулятор, который идёт вместе с SDK. Про Genymotion я знаю, но щупать своё творение в руке, по-моему, гораздо приятнее :)
Кстати, про adb over wifi — это не требует рут доступа, просто достаточно при usb подключении рестартануть adb на устройстве в режиме tcp/ip, делается так adb tcpip <port, например 5555> и всё, можно цеплятся по сети: adb connect ip:port, причем работает до перезагрузки девайса, то есть если вы перешли в другую сеть — просто надо переподключится по новому ip
Ивиняюсь за «ться» в комментарии :(
Как-то уж очень костыльно выходит. Пробовали вынести получение данных из БД в CursorLoader? По идеи должно помочь. При первом запуске делаете cursorLoader.initLoader() а при обновлении cursorLoader.restartLoader().
Я согласен. Как мне кажется, вы не то место оптимизировали.
new Handler().postDelayed(new Runnable() {...}, 300);
Согласен, я для решения этой проблемы просто с задержкой закрываю Navigation Drawer, давая полностью пройти FragmentTransaction
У Navigation Drawer есть другая проблема — он не всегда корректно открывается/закрывается, и если у вас есть UI тесты, которые с ним взаимодействуют — ждите рандомных фейлов этих тестов из-за NavigationDrawer.

Я задал такой вопрос на stackoverflow, но пока нормального решения нет: http://stackoverflow.com/questions/21848875/robotium-ui-testing-for-app-with-navigation-drawer
Решение — действительно костыль. Подбор какого-либо числа исходя из девайса — признак неверного решения. Скажем, на LG Optimus Link — 300 мс мало. Нужно хотя бы 500.
Оптимальным считаю следующий вариант:
по клику на пункт меню — записать в переменную (скажем pendingFragment) фрагмент, который нужно показать. И выполнить транзакцию по событию OnDrawerClosed() в DrawerListener.
Решение не мое, но оно мне нравится:
1. Идеально сработает на любом девайсе
2. Не увеличит количество костылей в Вашем коде
Действительно красивое решение! Спасибо вам.
И много у вас данных из БД подгружается?

В любом случае для лучше делать это во фрагментах асинхронно через CursorLoader как уже написали выше.

developer.android.com/guide/components/loaders.html
developer.android.com/reference/android/content/AsyncTaskLoader.htm
developer.android.com/reference/android/content/CursorLoader.html
На самом деле очень-очень мало.
Между тем, цитата из первого абзаца документации к DrawerLayout:

DrawerLayout
DrawerLayout.DrawerListener can be used to monitor the state and motion of drawer views. Avoid performing expensive operations such as layout during animation as it can cause stuttering; try to perform expensive operations during the STATE_IDLE state.
Sign up to leave a comment.

Articles

Change theme settings