2013-05-31 50 views
0

我目前正在開發一個應用程序,需要在後臺運行超過五分鐘後終止。爲了做到這一點,我必須在主頁按鈕被按下後或者在短信或電話中斷等情況下在後臺運行計時器,然後在五分鐘後方法將會變爲調用。我的第一個問題是我應該把的applicationWillResignActive方法還是applicationDidEnterBackground方法?我的第二個問題是,因爲這是一個應用程序,更多的一個視圖,我應該寫這些東西在AppDelegate類或其他地方?感謝您的答覆。終止在後臺運行的應用程序

+0

你的意思是你要調用'applicationWillTerminate'自己嗎? –

+0

我注意到其他應用程序將返回到他們的啓動畫面,這就是我希望我的應用程序執行的操作。 –

回答

2

1)你不能強制你的應用程序以編程方式完成。

2)你不應該自己調用這些AppDelegate方法。他們打算被系統稱爲只有

參考:UIApplicationDelegate Protocol Reference

+0

我發現這個鏈接,這是一個有效的解決方案? http://stackoverflow.com/questions/6923831/i-want-to-terminate-the-app-after-some-minutes-while-it-run-in-background?rq=1 –

0

這是一個非常貧民窟,但你可以做的是讓你的應用程序崩潰,當你想要它退出時,它會自動關閉,但不會關閉應用程序,但沒有真正的傷害,只要你是在控制它如何崩潰嘗試去訪問一個錯誤,又名試圖訪問已被釋放的東西

至於在後臺運行一個計時器,我不知道如果你可以做到這一點,但作爲替代方案,您可以節省離開應用程序的時間,即應用程序進入後臺,然後您可以將所有事件返回到作爲第一響應者的視圖控制器的應用程序,並且每個UIEvent都有一個時間戳,並且無論是哪個事件,您都可以比較時間戳並查看它是否大於5分鐘

無論我不建議任何上述情況,但這是最好的答案我可以拿出你的問題

代碼用於接收您的應用程序的事件出方

[[UIApplication sharedApplication] beginReceivingRemoteControlEvents]; 

將開始追蹤事件,回調就是:

- (void)remoteControlReceivedWithEvent:(UIEvent *)event { } 

,但你必須記住要

[self becomeFirstResponder]; 

這告訴該瀏覽器去的事件跟蹤設備,哦,不要忘了辭職第一響應,並endReceivingRemotecontrolEvents

+0

'貧民窟編程'..我想你剛發明了一個新詞組! :) – sangony