我開發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. 防止應用程序在設備重新啓動時關閉
- 3. 如何在不重新啓動設備的情況下重新啓動應用程序系統?
- 4. Android - 清除應用程序數據和重新啓動設備
- 5. Xamarin Android應用程序導致設備重新啓動
- 6. Android應用程序在Qt不啓動
- 7. 重新啓動設備時,是否會重新啓動監視重要位置更改的iOS應用程序?
- 8. 如何重新啓動我自己的qt應用程序?
- 9. iOS應用程序安裝後iPhone應用程序無法啓動,設備重新啓動後工作
- 10. 設備重啓後在後臺自動運行應用程序
- 11. QT4:如何重新啓動應用程序?重新設置?
- 12. 如何在啓動設備時啓動應用程序?
- 13. iPhone:爲什麼當我在設備上重新啓動應用程序時,我的應用程序會恢復並不會重新啓動?
- 14. 如何創建應用程序以重新啓動未設備設備的設備?
- 15. iOS設備重新啓動時的應用程序行爲(應用程序正在運行)
- 16. 應用程序將不會在設備上啓動
- 17. 應用程序不會在設備上啓動
- 18. 如何從我的Mac應用程序重新啓動和恢復iOS設備
- 19. 在嵌入式Linux設備上啓動QT應用程序(Beaglebone Black)
- 20. 重新啓動設備後,我的儲物櫃應用程序無法在Android棉花糖設備上工作
- 21. Ti Android:「需要重新啓動應用程序」在Android設備上安裝應用程序時出錯
- 22. 在重新啓動應用程序時重新啓動Android活動
- 23. 重新啓動Java應用程序
- 24. Netbeans - 應用程序重新啓動
- 25. 重新啓動Android應用程序
- 26. 應用程序何時重新啓動?
- 27. TTNavigator重新啓動應用程序內
- 28. Android - backbutton - 重新啓動應用程序
- 29. 重新啓動Swing應用程序
- 30. 重新啓動Rails應用程序
你嘗試顛倒這兩行的順序嗎? – Mat 2012-04-21 09:32:56
@Mat是的,但同樣的問題.. :( – abhishek 2012-04-21 09:54:11
你使用什麼設備?也許有你的設備的具體選項。我建議你試試在另一個設備上 – 2012-04-21 10:35:29