我开发Qt的Symbian的应用,其中我有我的应用程序内重新启动我的应用程序,都习惯了。它在模拟器上工作正常,但不在设备上,它关闭但不能自行重新启动,我必须自己重新启动它,还有什么我必须做的,以使其在设备上工作。应用程序不重新启动的设备在Qt
回答
一个解决方案是创建一个小的控制台进程,您可以在关闭它之前从主程序启动它。然后这个控制台进程将启动你的程序并关闭。 我一直在使用这种进程来跟踪我的应用程序,并在崩溃时重新启动它们。
能否请您提供一些代码片断 – abhishek 2012-04-23 11:15:03
一个小而基本的东西:在Symbian上有一个仿真器而不是模拟器。不同之处在于后者模拟装配级别的装置,而前者仅在API支持级别上进行。例如,iPhone模拟器在组装级别模拟手机。相反,在Symbian中,底层的API实现对于ARM和WINS体系结构可能是完全不同的。特别是在你像退出应用程序一样与操作系统交互的情况下。
Symbian上的应用程序退出操作最终通过抛出一个特殊的异常(我不记得它的名字,类似于KExitException)来实现,该异常被Active Scheduler循环捕获,告诉内核关闭进程。换句话说,这意味着它是一个同步调用。如果你第一次打电话quit
然后startProcess
那么后者将永远不会执行。不清楚为什么在你第一次调用startProcess
然后quit
时它不起作用:这可能是一个异步调用,在你退出之前无法完成,或者你简单的在两个实例中不能启动相同的(GUI)应用程序。无论如何检查返回值startProcess
看它是否成功。
您的最终解决方案是按照@Riho的建议创建看门狗进程。您在致电quit
之前启动看门狗过程,在看门狗主功能中,您等待几秒钟并重新启动应用程序。您将需要SwEvent功能来满足您的看门狗。
我与QProcess中(试过),它似乎是工作的罚款在main.cpp中(仍在测试的内存和线程问题)
我写这篇文章的代码(这是我从其他环节有)
int main(int argc, char *argv[])
{
#define RESTART_CODE 1000
int return_from_event_loop_code;
QPointer<QApplication> app;
QPointer<MainWindow> main_window;
do
{
if(main_window) delete main_window;
if(app) delete app;
app = new QApplication(argc, argv);
main_window = new MainWindow;
QList<QString> lang = AppStatus::getCurrentLanguage();
QTranslator translator;
translator.load(lang.at(0));
app->installTranslator(&translator);
main_window->setOrientation(MainWindow::ScreenOrientationLockPortrait);
#if defined(Q_OS_SYMBIAN)
main_window->showMaximized();
#else
main_window->show();
#endif
return_from_event_loop_code = app->exec();
}
while(return_from_event_loop_code==RESTART_CODE);
return return_from_event_loop_code;
}
并在我的方法从我必须重新启动我的应用程序我写了这个。
QProcess::startDetached(qApp->applicationFilePath(),qApp->arguments());
qApp->exit(RESTART_CODE);
而我的应用程序正在重新启动,就像我想..如果任何更改nedded plese让我知道。
它显示。?。“线程0x740已经慌类别:WSERV;原因:41”的错误在设备上的应用程序重新启动后,但不立即,应用程序启动正常,但当我打开它与上述错误崩溃其他一些屏幕。 – abhishek 2012-04-24 08:06:20
'另外,QProcess :: startDetached'很可能甚至没有做任何事情,重启似乎是完全由于循环。所以,你应该有QProcess中相同的结果。也许你可以通过在循环外部创建它并保持相同的'QApplication'实例,并创建,显示和删除只有主窗口e循环。 – alexisdm 2012-04-24 10:59:46
@alexisdm它运行正常第一次,但如果我再次调用该方法就说明线程慌了错误 – abhishek 2012-04-24 12:25:12
- 1. [Android]应用程序重新启动设备后重新启动
- 2. 在设备重新启动时启动iOS应用程序
- 3. 更新Android应用程序而不重新启动设备
- 4. 如何重新启动设备后重新启动应用程序?
- 5. 防止应用程序在设备重新启动时关闭
- 6. 带iBeacon的iOS应用程序必须重新启动设备
- 7. 如何在不重新启动设备的情况下重新启动应用程序系统?
- 8. 如何在设备重新启动时保持应用程序启动
- 9. Android - 清除应用程序数据和重新启动设备
- 10. Xamarin Android应用程序导致设备重新启动
- 11. 当插入USB设备时,Android应用程序重新启动
- 12. Android应用程序在Qt不启动
- 13. 如何在崩溃后重新启动qt应用程序?
- 14. 如何重新启动我自己的qt应用程序?
- 15. 如何重新启动qt中的应用程序?
- 16. 重新启动设备时,是否会重新启动监视重要位置更改的iOS应用程序?
- 17. 如何在cordova启动我的应用程序启动设备?
- 18. 应用程序不启动在系统重新启动
- 19. iOS应用程序安装后iPhone应用程序无法启动,设备重新启动后工作
- 20. 设备重启后在后台自动运行应用程序
- 21. 如何在Android设备重启时启动我的应用程序进程?
- 22. QT4:如何重新启动应用程序?重新设置?
- 23. android在关闭应用程序或重新启动设备时调用方法
- 24. 启动应用程序在设备启动时出现延迟
- 25. 如何在设备启动时启动应用程序
- 26. 如何在启动设备时启动应用程序?
- 27. Android应用程序不会在我的设备中启动
- 28. iPhone:为什么当我在设备上重新启动应用程序时,我的应用程序会恢复并不会重新启动?
- 29. 将重新启动应用程序重新启动前面
- 30. 如何创建应用程序以重新启动未设备设备的设备?
你尝试颠倒这两行的顺序吗? – Mat 2012-04-21 09:32:56
@Mat是的,但同样的问题.. :( – abhishek 2012-04-21 09:54:11
你使用什么设备?也许有你的设备的具体选项。我建议你试试在另一个设备上 – 2012-04-21 10:35:29