2013-08-07 1 views
0

Чтобы обеспечить правильное поведение кнопки обратной связи моего приложения для Android, использующего MvvmCross, мне пришлось внести поправки в конкретных просмотров в SingleTask. Хотя это прекрасно работает, когда один из этих представлений используется во второй раз, конструкторы ViewModel и Init (используемые в сочетании с классом Nav для передачи параметров из одного представления в другой), очевидно, больше не запускаются. Я предполагаю, что это поведение «по дизайну» или «соблюдение ОС Android», о котором вам просто нужно знать при размещении кода в конструкторах/методах Init, которые могут потребоваться каждый раз, когда отображается представление (например, RefreshJobList). Мой фикс кстати, поместить вызов требуемого метода в OnResume способе деятельности, например .:Активность Android LaunchMode SingleTask не запускает конструктор MvvmCross ViewModel или метод Init

((JobDetailViewModel)this.ViewModel).RefreshJobPhotos();

Есть ли «лучший способ»?

ответ

2

Я полагаю, что это поведение «дизайн» или «исполнение на ОС Android»

Если вы заставляя активность быть SingleTask то он будет создан только один раз, так что будет только ViewModel один раз.

Существует метод onNewIntent, который вы можете переопределить и использовать для разработки, когда это произойдет - MvvmCross попытался использовать это в прошлом, но его использование смутило большинство разработчиков, поэтому в настоящее время Mvx не работает в этом очень специализированная платформа.


При использовании SingleTask, пожалуйста, быть в курсе собственного предупреждения Андроида:

других режимов - singleTask и SingleInstance - это не подходит для большинства приложений, так как они приводят к модели взаимодействия, вероятно, будет незнакомым пользователям и сильно отличается от большинства других приложений.

от: http://developer.android.com/guide/topics/manifest/activity-element.html#lmode

+0

Спасибо Стюарт. Использование SingleTask было единственным способом создать правильное поведение кнопки «Назад», но это не делает навигацию приложения незнакомой. Это просто типичный экран списка с записью добавления/обновления/удаления, в котором отображается подробный экран. Поэтому всякий раз, когда вы находитесь на подробном экране, 2 нажатия кнопки «Назад» закрывают приложение, а не возвращают все экземпляры экранов списка и подробностей. – Graham