Xamarin.Forms + Prism,整理页面导航跳转流程
3个Page,Page1 -> Page2 -> Page3 -> Page2 -> Page1。
PageViewModel实现接口:IPageLifecycleAware、INavigatedAware、IDestructible
接口说明:
IPageLifecycleAware:Page Lifecycle | Prism
INavigatedAware:Passing parameters - INavigationAware | Prism
IDestructible:Creating Your First Prism App - Anatomy of a Prism Application | Prism
断点位置:
Page:
构造函数
PageViewModel:
构造函数、
OnAppearing方法(IPageLifecycleAware接口)、OnDisappearing方法(IPageLifecycleAware接口)、
OnNavigatedTo方法(INavigatedAware接口)、OnNavigatedFrom方法(INavigatedAware接口)、
Destroy方法(IDestructible接口)
断点进入顺序:
1、Page1 - 构造函数
2、Page1ViewModel - 构造函数
3、Page1ViewModel - OnNavigatedTo
4、Page1ViewModel - OnAppearing
跳转到Page2
5、Page2 - 构造函数
6、Page2ViewModel - 构造函数
7、Page1ViewModel - OnDisappearing
8、Page2ViewModel - OnAppearing
9、Page1ViewModel - OnNavigatedFrom
10、Page2ViewModel - OnNavigatedTo
跳转到Page3
11、Page3 - 构造函数
12、Page3ViewModel - 构造函数
13、Page2ViewModel - OnDisappearing
14、Page3ViewModel - OnAppearing
15、Page2ViewModel - OnNavigatedFrom
16、Page3ViewModel - OnNavigatedTo
返回到Page2
17、Page3ViewModel - OnDisappearing
18、Page3ViewModel - OnNavigatedFrom
19、Page2ViewModel - OnNavigatedTo
20、Page3ViewModel - Destroy
21、Page2ViewModel - OnAppearing
返回到Page1
22、Page2ViewModel - OnDisappearing
23、Page2ViewModel - OnNavigatedFrom
24、Page1ViewModel - OnNavigatedTo
25、Page2ViewModel - Destroy
26、Page1ViewModel - OnAppearing
使用硬件返回按钮,返回到桌面
27、Page1ViewModel - OnDisappearing
Page1没有进入Destroy方法,可以通过重写OnBackButtonPressed()方法,来进行释放资源等操作。