转到主屏幕

时间:2014-02-24 06:46:57

标签: windows-phone-8 windows-runtime

App flow就是这样;

  1. 用户启动应用程序并查看写有“后台任务已启动”的页面
  2. 如果用户点击后退按钮应用程序终止,后台任务结束
  3. 但如果用户点击“菜单”按钮并使用其他应用,则我的应用会继续运行
  4. 现在我有两个解决方案;请帮我解决这个问题。

    一个。我应该有“OK”按钮;如果用户点击它,则应打开主菜单 B.在Back按钮中写什么,以便App不会终止。

    在app.xaml

    私有静态Geolocator定位器;

        public static Geolocator Locator
        {
            get
            {
                lock (typeof(App))
                {
                    if (locator == null)
                    {
                        locator = new Geolocator();
                        locator.DesiredAccuracy = PositionAccuracy.High;
                        //locator.MovementThreshold = 50;
                        locator.ReportInterval = 10000;
                    }
                }
                return locator;
            }
        }
    

    在MainPage.xaml.cs

    protected override void OnNavigatedTo(NavigationEventArgs e)         {             App.Locator.PositionChanged + = Locator_PositionChanged;         }

    由于

1 个答案:

答案 0 :(得分:1)

最有可能的是,没有办法实现这一目标。

您可以覆盖后退按钮点击事件,但不能覆盖主页按钮事件。

此外,您甚至无法以编程方式调用本机主页按钮事件。

msdn forums

上有类似问题的链接

<强>更新即可。你仍然认为,问题出在后面和菜单按钮上。这对我来说似乎不对。问题是,当Application_Closing事件被命中时,后台代理未被激活。

app.xaml.cs中有两种方法:

Application_Deactivated和Application_Closing。如果执行了任何后台任务,则后台任务应处于活动状态。

// Code to execute when the application is deactivated (sent to background, e.g. menu button is hit)
// This code will not execute when the application is closing
private void Application_Deactivated(object sender, DeactivatedEventArgs e)
{

}

// Code to execute when the application is closing (eg, user hit Back)
// This code will not execute when the application is deactivated
private void Application_Closing(object sender, ClosingEventArgs e)
{

}

在后台代理构造函数中设置断点,并查看是否已命中。

不过,对于你的两个解决方案:

解决方案A无法完成。 解决方案B可以通过重写OnNavigatedFrom方法来完成。

protected override void OnNavigatedFrom(System.Windows.Navigation.NavigationEventArgs e)
        {          
            // nothing will happen here
            //base.OnNavigatedFrom(e);
        }
然而,这将是对Windows-phone navigationservice本机行为的粗暴违反。这不会通过认证。