回答
我知道這樣做的唯一方法是不理想的,但它的工作原理。
首先,您的應用程序必須退出後臺執行(多任務處理)退出時應用程序必須退出,而不是作爲後臺任務運行。這是通過plist鍵UIApplicationExitsOnSuspend完成的。
其次,您的應用需要註冊一個可用於啓動應用的自定義URL方案。
第三,您需要一個託管在某個地方的網頁,這個網頁在加載時會重定向到您應用的自定義URL方案。
第四,用戶需要一個活動的Internet連接。
要退出並重新啓動,請在託管重定向網頁上調用UIApplication openURL。您的應用將退出,Safari將啓動並加載您的頁面。該頁面將Safari重定向到您的自定義URL方案,提示Safari在內部調用openURL,導致iOS啓動您的應用程序。
如果你感覺不正常,你可以從你的應用程序本身託管頁面(你可以在'-applicationWillTerminate:'中退出約10秒鐘;在另一個線程中服務它可能更容易,但是你也可以調用socket (),bind(),listen(),accept(),write()和close())。讓您的應用在您提供該頁面後終止,並讓頁面延遲啓動您的應用(我認爲是「刷新」或「重新加載」標題)。 – 2010-11-21 22:27:20
你甚至不需要設置UIApplicationExitsOnSuspend;你只需要調用exit()。在-beginBackgroundTaskWithExpirationHandler中包裝「服務器」:確保您的應用獲得足夠的CPU時間來提供服務,然後您可以睡500毫秒(以「確保」發送數據)和退出()。複雜的一點是解析請求,但你可以通過睡眠500毫秒並讀入一個大的(8K)緩衝區,或者(如果你感覺冒險)選擇+讀取500毫秒。 – 2011-09-08 14:55:16
有趣......但可怕的解決方案! – KiNG 2014-06-09 09:52:19
除非你對越獄的設備開發,蘋果公司甚至不會讓你以編程方式終止您的應用程序。因此重新啓動設備是不可能的。
我認爲Alexei是指重新啓動應用程序,而不是設備。當然,重新啓動後者遠遠不是問題。 – 2010-11-21 17:35:06
當然你可以調用exit()或kill(),或者直接從main()或其他各種東西(比如abort())返回。這與崩潰無法區分,並且可能會因此導致Apple拒絕您的應用。 – 2010-11-21 18:05:11
什麼意思是從main()返回?我解決問題添加退出()按鈕應用程序。我需要它,因爲第一次和第二次測量總是不同的。 – 2010-11-22 06:46:41
我的帖子,你鏈接到指的是可可應用程序,而不是iOS。在iOS上,您可以使用exit(0);
退出應用程序(但Apple不喜歡這樣),但我不建議這樣做。雖然你不能重新啓動iPhone應用程序。
你AppDelegate
實例有一個方法
(void)applicationDidBecomeActive:(UIApplication *)application
{
}
在這裏,你可以把邏輯弄清楚,如果應用程序應重新啓動,或繼續做什麼它在做什麼。例如,您可以開始使用BOOL
變量appMustRestart
,即false
,但在您的應用程序中發生某些事情時,您希望下一次成爲新的重新啓動時觸發爲true。
if (appMustRestart)
{
[self resetVars]; // call a method that resets all your vars to initial settings
// INSERT CODE HERE TO TRANSFER FOCUS TO INITIAL VIEWCONTROLLER
}
- 1. 如何在iOS中以編程方式重新啓動或重新加載iPhone應用程序
- 2. 如何以編程方式重新啓動java web啓動應用程序
- 3. 以編程方式重新啓動應用程序?
- 4. 以編程方式重新啓動android應用程序
- 5. 以編程方式重新啓動應用程序?
- 6. 以編程方式重新啓動應用程序崩潰
- 7. 以編程方式重新啓動離子應用程序
- 8. 通過AppDelegate以編程方式重新啓動iphone應用程序
- 9. iOS:如何以編程方式更改應用程序語言而無需重新啓動應用程序?
- 10. 如何在Android中崩潰時以編程方式重新啓動/重新啓動應用程序?
- 11. 如何以編程方式重新啓動單實例應用程序
- 12. 以編程方式重新啓動IIS
- 13. 我能否以編程方式重新啓動iPhone應用程序以在Swift中應用語言更改
- 14. 以編程方式重新啓動Windows應用商店應用程序
- 15. 如何以編程方式啓動iOS/IPAD上的隱藏應用程序?
- 16. 如何以編程方式更改應用程序語言無需重新啓動我的應用程序?
- 17. 如何以編程方式啓動掛架Web應用程序?
- 18. 如何以編程方式啓動Facebook應用程序?
- 19. 如何以編程方式啓動應用程序?
- 20. 如何以編程方式啓動JNLP應用程序?
- 21. 如何通過編碼重新啓動IOS應用程序?
- 22. 重新啓動iPhone應用程序
- 23. iPhone應用程序重新啓動?
- 24. 重新啓動Iphone應用程序
- 25. iOS如何從設置應用程序以編程方式啓動WIFI頁面?
- 26. 我的應用程序在4.1 iOS上重新啓動iPhone
- 27. ASP.NET Core 1.0/MVC 6以編程方式重新啓動應用程序
- 28. 以編程方式崩潰後重新啓動應用程序 - Android
- 29. 你能以編程方式重新啓動一個j2ee應用程序嗎?
- 30. 以編程方式啓用應用程序的市場更新
不這樣做。爲了上帝的愛。 – 2010-11-21 18:08:10
那麼你有報價的例子是可可應用程序不適用於可可觸摸(iOS)應用程序。其次,它不可能在iOS上重新啓動你的應用程序。 – itsaboutcode 2010-11-21 21:09:22
當然,真正的問題是:你爲什麼想要? – 2010-11-21 22:22:50