2017-08-31 101 views
0

我知道下面的文檔,但即使在閱讀它後,我仍然不明白爲什麼它會終止我的應用程序。應用程序在暫停時靜默終止。 (用戶按下鎖定按鈕,而在我的應用程序)

應用程序必須隨時準備終止發生,並且不應該等待保存用戶數據或執行其他關鍵任務。系統啓動的終止是應用程序生命週期的正常組成部分。系統通常會終止應用程序,以便它可以回收內存併爲用戶啓動的其他應用程序騰出空間,但系統也可能會終止錯誤操作或未及時響應事件的應用程序。 掛起的應用程序在終止時不會收到通知;系統殺死進程並回收相應的內存。如果應用程序當前正在後臺運行並且未掛起,系統會在終止之前調用其應用程序委託的applicationWillTerminate:。設備重新引導時,系統不會調用此方法。 除了系統終止您的應用程序之外,用戶還可以使用多任務UI來顯式終止您的應用程序。用戶發起的終止與終止暫停的應用具有相同的效果。應用程序的進程被終止並且沒有通知被髮送到應用程序。

我只有我的一個應用程序在後臺,所以我無法想象它會終止我的應用程序,因爲它需要更多的內存。但我注意到該文檔還說,如果應用程序行爲不當,應用程序可能會被終止,是否有人知道這意味着什麼?我在我的info.plist中錯過了什麼嗎?我是否違反了某些迫使我的應用程序被終止的協議?當它終止我的應用程序時,它似乎總是非常隨意的,它可能只有15分鐘,或者可能是1小時。

我也看了一下四周,這裏

Will ios terminate the app running in background after a specific time?

看到這個線程

我明白,如果我的應用程序是在後臺和用戶是做其他事情在此期間被終止,但我不明白爲什麼它會被終止,特別是它從鎖定按鈕暫停。特別是當我在只有我的應用程序在內存中的iphone 6s上進行測試時。

+1

您是否使用任何背景模式?如果沒有,那麼iOS可能已經決定你的應用程序沒有被使用,它可以從內存中清除。即使您沒有運行其他應用程序,操作系統仍在運行任務 – Paulw11

+0

@ Paulw11後臺模式是後臺獲取和遠程通知。我知道它可以從內存中清除,但是我真的懷疑它會清除我的應用程序,因爲它需要更多的內存或他們在文檔中列出的任何理由。另外,如果沒有一個可靠的理由清除了這個問題,這與蘋果將應用程序留在記憶中的動機相抵觸,反對終止它們。 – TNguyen

回答

0

你看過崩潰日誌嗎?當你不在屏幕上時,有些事情會導致你被終止,而後臺就像做OpenGL調用一樣。

或者,您的應用程序中可能存在一個使其崩潰的系統並未實際終止您。連接設備,進入Xcode> Window>設備&模擬器,並在崩潰時查看設備的設備日誌。

這可能會給你一個線索。

+0

我已經檢查了我的崩潰日誌,不幸的是沒有運氣,它似乎不像我的應用程序崩潰。 – TNguyen

+0

如果系統正在查殺您的應用程序,系統控制檯日誌中還會顯示一條消息。 – clarus

相關問題