0

为了为使用 MvvmCross 的 Android 应用程序提供正确的后退按钮行为,我不得不将LaunchMode特定视图的SingleTask. 虽然这工作正常,但当第二次使用这些视图之一时,ViewModel 构造函数和 Init 方法(与一个Nav类结合使用以将参数从一个视图传递到另一个视图)显然不再被触发。我认为这是“设计使然”或“由 Android 操作系统强制执行”的行为,当您将代码放置在每次显示视图时可能需要调用的构造函数/初始化方法中时(例如 RefreshJobList),您只需要注意这些行为。OnResume顺便说一句,我的解决方法是在 Activity的方法中调用所需的方法,例如:

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

有没有更好的办法”?

4

1 回答 1

2

我认为这是“设计”或“Android 操作系统强制执行”的行为

如果您强制 Activity 成为,SingleTask那么它只会被创建一次,因此它只会获得一次 ViewModel。

有一个 onNewIntent 方法,当这种情况发生时,您可以覆盖并使用它来解决 - MvvmCross 过去曾尝试使用它 - 但它的使用让大多数开发人员感到困惑 - 所以目前 Mvx 在这个非常专业的平台上不碍事 -特定区域。


使用时SingleTask,请注意Android自身的警告:

其他模式——singleTask 和 singleInstance——不适用于大多数应用程序,因为它们会导致用户可能不熟悉的交互模型,并且与大多数其他应用程序非常不同。

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

于 2013-08-07T18:34:46.050 回答