2013-12-23 67 views
0

我正在構建一個MVVM Windows Phone 8應用程序。墓碑不工作wp8

我看到這篇文章來嘗試解決問題tombstonning:http://www.scottlogic.com/blog/2011/10/03/a-windows-phone-7-1-mango-mvvm-tombstoning-example.html

這個例子在MVVM應用程序實現Tombstonning。該應用程序在列表框中生成一個twitter feed。

我改變了這個例子的一些代碼行,因爲它處理舊的twitter API,但是當我運行應用程序,關閉它或激活贏或搜索按鈕,然後重新啓動它,頁面狀態是不一樣。

以下是我在視圖模式更改爲模擬新的Twitter飼料:

j = new List<FeedItemViewModel>(); 
    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample1", 
     Id = 1 
    }); 


    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample2", 
     Id = 2 
    }); 
    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample3", 
     Id = 3 
    }); 
    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample4", 
     Id = 4 
    }); 
    j.Add(new FeedItemViewModel 
    { 
     Author = "Auth", 
     Title = "Sample5", 
     Id = 5 
    }); 
    foreach (FeedItemViewModel t in j) 
    { 

     this._feedItems.Add(t); 

    } 
    public void Update() 
     { 
      this._feedItems.Add(new FeedItemViewModel 
      { 
       Author = "_Auth", 
       Title = "_Sample", 
       Id = 99 
      }); 
     } 

但是當我關閉我的應用程序,然後重新啓動它的狀態是不一樣的,比如滾動條位置與我離開應用程序時不一樣,儘管本示例中有一個方法可以記住列表的滾動位置。

你知道墓碑爲什麼不能正常工作嗎?

+0

你在模擬器中運行呢?你有沒有設置在項目 - >屬性 - >調試checbox'停用後墓碑'? – Romasz

+0

不,我在電話上運行它 – user2505650

回答

1

關閉與墓碑無關。

當您按手機上的「贏」或「搜索」按鈕時,會發生墓碑停用。您的應用程序變爲非活動狀態,並且主屏幕或搜索應用程序(或任何其他應用程序僅作爲示例)將變爲活動狀態。根據許多事情,您的應用程序會進入休眠或墓碑狀態。

當您按下後,活動應用程序關閉,之前活動的應用程序再次變爲活動狀態。這就是所謂的激活。

當激活發生時,您的應用可能會從休眠狀態(所有內容都保存在內存中,應用剛剛暫停)或從邏輯刪除狀態恢復(系統「重新啓動」應用並恢復導航堆棧和當前頁面,開發人員負責恢復所有其他狀態變量,輸入數據等)。

所以,不同之處在於,墓碑化的應用並沒有保留所有的狀態,這是開發者的任務。

上有MSDN about Windows Phone App Lifecycle

好的文件你可以瞭解它是如何工作使用這篇文章的例子 - WP7 Application Lifecycle and Tombstoning

+0

對不起,我沒有讓自己很清楚,我也按了WinButton和搜索按鈕,但我回到我的應用程序,它就像應用程序從頭開始運行 – user2505650

+0

以下例子,您是否實現了LoadViewModelFromAppState方法來加載數據? 此外,您可以調試停用和邏輯刪除,並查看ScrollOffset是否真的存儲在這些事件中並從狀態讀取? –

+0

是的,我實現了這種方法,你可以請嘗試編譯這段代碼,看看它是否工作? – user2505650