WP8上Application_Launching方法的时间/线程究竟是什么?具体来说,关于UI加载/渲染序列?
我有一个应用程序,其中一些全局init正在Application_Launching中完成。我从一个在开始页面的XAML数据绑定期间调用的方法获取崩溃报告;崩溃与全球初始化没有发生一致。
编辑:我正在调用一个本地(C ++)方法,该方法将文件读入全局变量中的malloc
内存块,该变量已初始化为null。所述变量作为崩溃报告的一部分被转储;我有一份报告称它为空。
粘贴代码将是毫无意义的恕我直言。
答案 0 :(得分:1)
启动应用时,会引发Launching
事件。然而,该应用程序稍后可以处于休眠状态,在称为“墓碑”的过程中。当恢复逻辑删除的应用时,它不会引发Launching
事件而是引发Activated
事件。你很可能忘了处理那个案子。
要轻松测试,请在“调试”选项卡中输入Windows Phone项目的属性,然后选中“调试时停用时删除逻辑删除”选项。从那里开始,每次在连接调试器时停用应用程序(通常,当按下模拟器上的主页按钮时),应用程序将被逻辑删除,并且您可以确保在切换回应用程序时它正确恢复。
答案 1 :(得分:0)
我有另一种理论。这不是关于在错误的时间加载库,而是关于库卸载。由于几乎所有的本机函数都是静态的,并且状态是全局的,因此没有活动的本机对象,并且COM子系统对模块的引用计数为零。根据COM规则,像这样的模块是随时卸载的公平游戏。在随后的本机函数调用中,重新加载库,但全局状态消失。
从下一个版本开始,我将为应用程序的生命周期保留一个实时原生对象。我们将看看崩溃是否会再次发生。