所以我的情況是,page1.xaml有一個可點擊的項目列表。說,項目#1,#2,#3。點擊任何一個用戶後,用戶會看到page2.xaml(例如,用戶在查看項目#1,#2或#3的內容之前需要先登錄)。Windows Phone - 使用OnNavigatedFrom的NavigationEventArgs傳遞數據。有沒有內存泄漏?
因此,page2.xaml有一個「登錄」按鈕。點擊應用程序應該登錄用戶,並顯示「下一頁」。 「下一頁」可以是項目#1,#2或#3的內容。
我不想將下一頁存儲爲相對URL的字符串,例如,因爲「下一頁」可能需要參數。例如,要顯示項目#2,我需要傳遞項目ID和一堆其他參數。
所以,我需要設置page2.xaml,因爲它知道「下一頁」和參數傳遞導航到下一個頁面時的方式。
這裏是我想出代碼... 我們頁面#1。
public partial class Page1 : PhoneApplicationPage
{
public Page1()
{
InitializeComponent();
}
private object[] parametersForNextPage;
protected override OnNavigatedFrom(NavigationEventArgs e)
{
if (e.Content is Page2)
{
if (parametersForNextAction != null)
{
var mm = (Page2)e.Content;
// The reason why I need to set mm.NextPage and mm.parameters is because the NextPage could be any page
mm.NextPage = HandleActionFunc; // This is some another function that will be called after Page2
mm.parameters = parametersForNextPage; // HandleActionFunc needs parameters
}
}
}
private void Item_Click(object sender, RoutedEventArgs e)
{
var control = (SomeRandomUserControlDefinedByMe)sender;
parametersForNextPage = control.parameters;
PageNavController.NavigateToPage2();
}
}
然後,我們有網頁#2:
public partial class Page2 : PhoneApplicationPage
{
public object[] parameters;
public Action<object[]> goToNextPage;
public Page1()
{
InitializeComponent();
}
//...//
private void Button_Click(object sender, EventArgs e)
{
GoToNextPage(parameters);
}
}
現在,我的問題是...可這導致內存泄漏?
我不太知道這一個...
第2頁將有一個參數域這是第1頁的 parametersForNextPage參考。
這是否意味着,當第1頁轉到第二頁,第二頁將保留第1頁被當作垃圾收集,因爲它保持爲第1頁的字段的引用?
但即使是這種情況,當從第2頁導航到「下一頁」時......垃圾回收器現在會擦除第1頁和第2頁?
我可能不清楚,因爲我不習慣在網上發帖編碼的問題,但我希望,有人能幫助我明確垃圾收集在這種情況下如何工作的疑慮。
這可能不是來傳遞數據,順便說一句最好的辦法了,如果是這樣的話,隨時提出我另一種方式來做到這一點的邏輯。
乾杯