0

我正在构建一个 MVVM Windows Phone 8 应用程序。

我读了这篇文章试图解决墓碑问题:http ://www.scottlogic.com/blog/2011/10/03/a-windows-phone-7-1-mango-mvvm-tombstoning-example.html

此示例在 MVVM 应用程序上实现 Tombstonning。该应用程序在列表框中生成一个 twitter 提要。

我在处理旧的 twitter api 时更改了这个示例的一些代码行,但是当我运行应用程序时,关闭它或激活 Win 或 Search 按钮,然后重新启动它,页面状态不一样。

这是我在视图模型中更改以模拟新的 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
            });
        }

但是当我关闭我的应用程序并重新启动它时,状态并不相同,例如滚动条位置与我离开应用程序时的位置不同,尽管此示例中有一个方法可以记住列表的滚动位置。

你知道为什么墓碑不能正常工作吗?

4

1 回答 1

1

关闭与墓碑无关。

当您按手机上的“赢”或“搜索”按钮时,会发生墓碑/停用。您的应用程序变为非活动状态,主屏幕或搜索应用程序(或任何其他,这只是一个示例)变为活动状态。您的应用程序会进入休眠或墓碑状态,这取决于许多事情。

当您按下返回时,活动应用程序将关闭,之前活动的应用程序再次变为活动状态。这就是所谓的激活。

当激活发生时,您的应用程序可能会从休眠状态(一切都保存在内存中,应用程序只是暂停)或墓碑状态(系统“重新启动”应用程序并恢复导航堆栈和当前页面,开发人员负责恢复所有其他状态)恢复- 变量、输入数据等)。

因此,不同之处在于墓碑应用程序不会将所有状态保留在内部,这是开发人员的任务。

MSDN上有一个关于Windows Phone App Lifecycle的好文档

您可以通过这篇文章了解它的工作原理 - WP7 Application Lifecycle and Tombstoning

于 2013-12-23T16:38:17.310 回答