Используйте mvvmcross для Xamarin.Android. Почему MvxCachingFragmentCompatActivity вызывает метод ExecutePendingTransactions в методе ShowFragment вручную? Какие действия выполняются с этим вызовом? Как я вижу, это может занять около секунды для нескольких устройств во время навигации. ThanksПочему MvxCachingFragmentCompatActivity вызывает ExecutePendingTransactions вручную?
ответ
В основном необходимо, если следующие действия полагаются на обработку commit() перед выполнением любых других действий.
Для MVVMCross особенно:
OnFragmentChanging(fragInfo, ft);
ft.Commit();
SupportFragmentManager.ExecutePendingTransactions();
OnFragmentChanged(fragInfo);
OnFragmentChanged-событие, очевидно, должна быть вызвана только в случае изменения получили применяются. Просто взять один из фрагментов кода из MvxCachingFragmentCompatActivity
.
После
FragmentTransaction
совершается сFragmentTransaction.commit()
, он должен быть казнен асинхронно на главном потоке процесса. Если вы хотите, чтобы немедленно выполнял такие ожидающие операции, вы можете вызвать эту функцию (только из основного потока), чтобы сделать это. Обратите внимание, что все обратные вызовы и другие связанные с ними действия будут выполняться в рамках этого вызова, поэтому будьте осторожны с тем, откуда это вызывается.
- 1. Почему «boost.thread» вызывает «intrusive_ptr_add_ref» вручную?
- 2. MvxCachingFragmentCompatActivity refresh кешированный фрагмент
- 3. Вызов getSupportFragmentManager() после getChildFragmentManager() вызывает IllegalStateException: Рекурсивный вход executePendingTransactions
- 4. executePendingTransactions не фиксирует FragmentTransaction
- 5. Рекурсивная запись в executePendingTransactions - Android
- 6. Вручную добавление данных вызывает IntegrityError
- 7. SpiderMonkey: Вручную вызывает функцию конструктора
- 8. Как отключить BackStack с MvxFragment MvxCachingFragmentCompatActivity
- 9. Фрагмент Рекурсивный на executePendingTransactions Ошибка
- 10. Добавление DataGridViewRow вручную вызывает пустые ячейки
- 11. Вручную вызывает didDeselectRowAtIndexPath, когда ячейка создана
- 12. Android ViewPager вручную вызывает PageTransformer transformPage
- 13. ADF Вызывает операцию вручную из кода
- 14. Вручную вызывает проверку html5 при нажатии кнопки
- 15. Android - executePendingTransactions нельзя ссылаться из статического контекста
- 16. Рекурсивная запись в executePendingTransactions, даже с getChildFragmentManager
- 17. Почему вручную перемещается UIImageView медленно?
- 18. Ввод ввода вручную. Использование входного файла вызывает бесконечный цикл?
- 19. JQuery вызова фокуса() вручную не вызывает целое событие
- 20. Почему PHP cacheizeize() вызывает?
- 21. GZipStream.Close вызывает ObjectDisposedExeption: Почему?
- 22. Почему MessageBox.Show вызывает UnhandledException?
- 23. Почему foreach вызывает GetHashCode?
- 24. Почему pthread_cond_signal вызывает тупик
- 25. почему _vsnprintf вызывает ошибку
- 26. Почему это вызывает ошибку?
- 27. Почему strcat вызывает сбой?
- 28. Почему Enumerable.Cast вызывает InvalidCastException?
- 29. Почему ByteArrayOutputStream.close() вызывает IOException?
- 30. Почему java.lang.Iterable.forEach() вызывает requireNonNull()?
Спасибо, Cyriac. Не могли бы вы посоветовать, как улучшить скорость навигации. Потому что теперь даже не очень сложный фрагмент может открыть около 2 секунд (для Nexus 4). В чем причина этого? возможно, отражение, когда привязки из axml создаются? Если я изменю его на привязки с кодом, может ли он улучшить мою скорость? – Karrde
Ну, используя последнюю версию MVVMCross, это хорошее начало, так как они внесли некоторые изменения в привязки (https://github.com/MvvmCross/MvvmCross/issues/1342). Мое приложение перемещается примерно за секунду на активность, с фрагментом с двумя другими фрагментами между ними и tablayout в одном фрагменте, имея график реального времени в другом фрагменте (все мои привязки выполняются в axml). Так что, вероятно, это зависит от того, что вы делаете во время навигации. – Cyriac
Хорошо. Но в дополнение к этому у меня проблема с анимацией - эффект пульсации висит, поскольку весь процесс навигации находится в основном потоке. Можно ли сделать anythinh, кроме добавления задержки до ShowViewModel? – Karrde