按下主页,搜索或后退按钮时应用程序崩溃WinPhone RT

时间:2015-05-26 13:38:29

标签: c# windows-phone-8.1 runtime

我正在开发条形码扫描仪,我的MainPage全屏显示CaptureElement。我还有另外两个页面导航到:HystoricalPage和AboutPage。要在从MainPage导航到其他页面之一时停止异步,我在OnNavigatedFrom中使用Dispose();方法。像这样:

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
     _mediaCapture.Dispose();
}

有了这个,我在页面之间导航就好了,有时当我回到主页时CaptureElement没有重新定位,但现在这不是我的问题。我的问题如下:

当我在我的某个页面中并按下主页按钮并返回我的应用程序后;按下搜索按钮,然后返回我的应用程序;当我按住后退按钮并回到我的应用程序后。在所有这些情况下,我的应用程序崩溃。我读过它可能是使用恢复和挂起事件修复的,但我不知道如何将这些事件添加到我的应用程序中。如果有人能帮助我,我会感到骄傲。谢谢!

3 个答案:

答案 0 :(得分:0)

按下开始按钮时,我遇到了与相机应用程序类似的问题。我解决它的方式是:

protected override void OnNavigatedFrom(NavigationEventArgs e)
{
    App.Current.Resuming -= App_resuming;
    App.Current.Suspending -= App_suspending;
    _mediaCapture.Dispose();
}

protected override void OnNavigatedTo(NavigationEventArgs e)
{
    App.Current.Resuming += App_resuming;
    App.Current.Suspending += App_suspending;
}

private void App_suspending(object sender, SuspendingEventArgs args)
{
    _mediaCapture.Dispose();
}

private void App_resuming(object sender, object e)
{
    //reinitialize _mediaCapture object
}

正如上面的romasz所说,你无法在调试模式下准确测试,即使你可以在调试时使用生命周期事件暂停和恢复,我发现有些类(对于示例BackgroundMediaPlayer)以奇怪的方式表现,因此最好通过部署来测试应用程序。

答案 1 :(得分:0)

导航事件仅在应用程序本身内导航时触发。当用户通过按下Windows键切换出应用程序时,它们不会触发。要处理这种情况,您可以在Activated取消激活时将MediaCapture置于CoreWindow。WindowActivationState事件中。

答案 2 :(得分:0)

我也遇到过这些问题并设法通过在媒体捕获上使用.dispose来解决它。请在此处查看我的评论以获取更多信息:https://github.com/phonegap/phonegap-plugin-barcodescanner/issues/166