2016-12-12 19 views
1

目前我正在使用MasterDetailPage作爲我的應用程序,我意識到創建頁面可能需要很長的時間,這會讓應用程序在選擇菜單從母版頁。Xamarin表單:如何加快內容頁面的創建

var TimeA = DateTime.Now; 
       var page = (Page)item.GetPage.Invoke(); 
       System.Diagnostics.Debug.WriteLine("Time A Taken to change = " + DateTime.Now.Subtract(TimeA).TotalMilliseconds); 

       var TimeB = DateTime.Now; 
       var navigationPage = new NavigationPage(page); 
       navigationPage.BarBackgroundColor = ((NavigationPage)Detail).BarBackgroundColor; 
       navigationPage.BarTextColor = ((NavigationPage)Detail).BarTextColor; 
       System.Diagnostics.Debug.WriteLine("Time B Taken to change = " + DateTime.Now.Subtract(TimeB).TotalMilliseconds); 

       var TimeC = DateTime.Now; 
       Detail = navigationPage; 
       Detail.Title = item.Title; 
       System.Diagnostics.Debug.WriteLine("Time C Taken to change = " + DateTime.Now.Subtract(TimeC).TotalMilliseconds); 

我已經發布了一個問題,但我認爲這是主要的細節問題,我已經刪除該帖子。現在我意識到問題來自item.GetPage.Invoke。

Func<Page> GetPage =() => { return new DemoPage(); } 

即使我直接使用new關鍵字創建而不是調用GetPage,所用的時間仍然是一秒。

時間B和時間C這兩個只需要50ms到100ms這是我可以接受的。時間A是最差的。

有沒有辦法加速或異步執行。

在iOS上,時間A和時間C花費的時間可能會更長。這兩個時間我都會得到340ms。我不確定,因爲沒有太多的應用程序運行在iPhone上。這部分的iPhone性能是可以接受的,至少我不需要等待一秒鐘。

回答

0

儘管我無法加速不同navigationPage之間的轉換,但我決定在後臺任務中執行此操作,並將MasterDetailPage的背景設置爲與新頁面相同,因此看起來不會太尷尬。

相關問題