我正在开发条形码扫描仪,我的MainPage全屏显示CaptureElement
。我还有另外两个页面导航到:HystoricalPage和AboutPage。要在从MainPage导航到其他页面之一时停止异步,我在OnNavigatedFrom中使用Dispose();
方法。像这样:
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
_mediaCapture.Dispose();
}
有了这个,我在页面之间导航就好了,有时当我回到主页时CaptureElement
没有重新定位,但现在这不是我的问题。我的问题如下:
当我在我的某个页面中并按下主页按钮并返回我的应用程序后;按下搜索按钮,然后返回我的应用程序;当我按住后退按钮并回到我的应用程序后。在所有这些情况下,我的应用程序崩溃。我读过它可能是使用恢复和挂起事件修复的,但我不知道如何将这些事件添加到我的应用程序中。如果有人能帮助我,我会感到骄傲。谢谢!
答案 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