1. 程式人生 > >iOS 解決蘋果手機鎖屏後APP退出的問題及app狀態

iOS 解決蘋果手機鎖屏後APP退出的問題及app狀態

進入後臺程式退出是由iOS系統管理決定的,但APP退出在後臺後,只有10秒的持續執行時間,然後暫停。但該APP還在記憶體中,當出現記憶體警告,也就是別的APP要執行,而此時記憶體又不足的情況下,系統會回收停在後臺APP所佔用的記憶體。如果出現這種情況,那麼你再次開啟你的APP,就會重新啟動。
不知道你是為什麼要讓APP在後臺還要繼續執行,如果非得這樣,那可以使用多執行緒技術中的gcd,可以讓APP退出後繼續執行很長一段時間(大概10分鐘)

iOS APP型別:
1. 儲存現場。按下Home鍵10秒內直接殺死程序,並釋放記憶體。
2. iOS支援的“多工”。按下Home鍵轉入多工狀態,保留在記憶體中,但只能系統允許的動作:比如GPS,比如VoIP,比如音樂等等。
3. 真正的桌面級別的多工。只有Safari/Mail是,蘋果嫡系大都都不是。這個級別的app在後臺沒有任何限制動作。

無限制動作的程式,一會在使用者無察覺的情況下耗光電力,二會有安全上面的問題(那些在後臺依舊默默傳送你的個人訊息程式)
順便提一句,後兩種佔用記憶體的app,也會在任意時間從記憶體中被砍掉,取決於你是否動用了其它app而導致記憶體不足。
真正不會被砍掉的後臺,只有蘋果那個通知系統。

---------------------------

手機鎖屏---------程式失去焦點----------程式進入後臺

螢幕解鎖---------將要進入前臺-----------程式獲得焦點

手機切換到主介面-------程式失去焦點----------程式進入後臺

雙擊home鍵-(但時不鎖屏,)-----------程式失去焦點,如果鎖屏就進入後臺;

------------------------------

Not running  未執行  程式沒啟動

Inactive          未啟用        程式在前臺執行,不過沒有接收到事件。在沒有事件處理情況下程式通常停留在這個狀態

Active             啟用           程式在前臺執行而且接收到了事件。這也是前臺的一個正常的模式

Backgroud     後臺           程式在後臺而且能執行程式碼,大多數程式進入這個狀態後會在在這個狀態上停留一會。時間到之後會進入掛起狀態(Suspended)。有的程式經過特殊的請求後可以長期處於Backgroud狀態

Suspended    掛起           程式在後臺不能執行程式碼。系統會自動把程式變成這個狀態而且不會發出通知。當掛起時,程式還是停留在記憶體中的,當系統記憶體低時,系統就把掛起的程式清除掉,為前臺程式提供更多的記憶體。


各個程式執行狀態時代理的回撥:

- (BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions
      告訴代理程序啟動但還沒進入狀態儲存
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
     告訴代理啟動基本完成程式準備開始執行
- (void)applicationWillResignActive:(UIApplication *)application
    當應用程式將要入非活動狀態執行,在此期間,應用程式不接收訊息或事件,比如來電話了
- (void)applicationDidBecomeActive:(UIApplication *)application 
     當應用程式入活動狀態執行,這個剛好跟上面那個方法相反
- (void)applicationDidEnterBackground:(UIApplication *)application
    當程式被推送到後臺的時候呼叫。所以要設定後臺繼續執行,則在這個函式裡面設定即可
- (void)applicationWillEnterForeground:(UIApplication *)application
當程式從後臺將要重新回到前臺時候呼叫,這個剛好跟上面的那個方法相反。
- (void)applicationWillTerminate:(UIApplication *)application
當程式將要退出是被呼叫,通常是用來儲存資料和一些退出前的清理工作。這個需要要設定UIApplicationExitsOnSuspend的鍵值。
- (void)applicationDidFinishLaunching:(UIApplication*)application
當程式載入後執行

在上面8個方法對應的方法中鍵入NSLog列印。

現在啟動程式看看執行的順序:

啟動程式
lifeCycle[40428:11303] willFinishLaunchingWithOptions
lifeCycle[40428:11303] didFinishLaunchingWithOptions
lifeCycle[40428:11303] applicationDidBecomeActive

按下home鍵

lifeCycle[40428:11303] applicationWillResignActive
lifeCycle[40428:11303] applicationDidEnterBackground

雙擊home鍵,再開啟程式

lifeCycle[40428:11303] applicationWillEnterForeground
lifeCycle[40428:11303] applicationDidBecomeActive


解決蘋果手機鎖屏後APP退出的問題

//應用程式將要變成不活躍狀態/失去焦點

- (void)applicationWillResignActive:(UIApplication *)application {

//    [[LTSetAerobicsStatictics defaultSetAerobicsStatictics] writeWarningStaticticsToFile];

//    [[LTAerobicsWarningStatictics defaultAerobicsWarningStatictics] writeWarningStaticticsToFile];

//    [LTPondModalStatictics writePondModalStaticticsToFile];

}

//應用程式進入後臺

- (void)applicationDidEnterBackground:(UIApplication *)application {

NSLog(@"進入後臺");

}

//應用程式將要進入前臺

- (void)applicationWillEnterForeground:(UIApplication *)application {

NSLog(@"將要進入前臺");

////在程式將要進入前臺時傳送開啟socket重連的通知,socket頁面接收到通知後,建立socket連線

     [[NSNotificationCenterdefaultCenter]postNotificationName:

@"initSocket"object:nil];

    }

//應用程式變成活躍狀態

- (void)applicationDidBecomeActive:(UIApplication *)application {

NSLog(@"程式活躍獲得焦點");

}

//應用程式將要終止

- (void)applicationWillTerminate:(UIApplication *)application {

NSLog(@"程式將要終止");

}

//設定螢幕旋轉,橫豎屏操作

-(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window{

returnUIInterfaceOrientationMaskPortrait;//豎屏

//    return UIInterfaceOrientationMaskAll;//螢幕旋轉

}


相關推薦

iOS 解決蘋果手機APP退出的問題app狀態

進入後臺程式退出是由iOS系統管理決定的,但APP退出在後臺後,只有10秒的持續執行時間,然後暫停。但該APP還在記憶體中,當出現記憶體警告,也就是別的APP要執行,而此時記憶體又不足的情況下,系統會回收停在後臺APP所佔用的記憶體。如果出現這種情況,那麼你再次開啟你的APP

蘋果手機的常見原因解決方案

隨著手機的多樣性普及,蘋果手機對於大家來說並不陌生,但是蘋果手機還是會出現藍屏這樣的問題,藍屏很多時候都是因為蘋果手機中的一些漏洞造成的。就蘋果手機來說,目前iPhone5S是被曝出會出現藍屏的情況最多的一款手機。蘋果手機藍屏怎麼回事?到底是什麼情況造成了蘋果的藍屏?目前猜測

360wifi: 手機360wifi掉線的解決方法

clas tex 有關 技術 img 安全性 content 出現 list 如遇到iphone鎖屏斷網的情況,按照以下操作步驟可以解決一部分用戶的問題 (該問題並不是360WifFi問題,與蘋果機制有關)如有安卓手機掉線,請確保手機連接其他Wifi並不會掉線,然後嘗試粉色

【轉】手機收不到訊息推送解決方案

問題描述 部分 Android 手機系統在黑屏待機後自動清理後臺執行的軟體,這樣影響了應用正常接收新的訊息,需要將應用設定為後臺執行應用。各類機型的設定說明如下: 華為 Mate9 手機設定說明 華為榮耀 6Plus 手機設定說明 華為麥芒手機設定說明 OPPO 手機設

手機js倒計時停止問題解決辦法探索

如圖,有這麼個需求,測試人員在測試過程中提了一個bug,手機鎖屏再喚醒倒計時時間沒有更新,仍從鎖屏的時間繼續,於是開始尋找解決之法 經瞭解得知,鎖屏時候,瀏覽器的一切活動會停止執行,那麼js也無法倖免,這時候就想到有沒有能監聽瀏覽器活動停止的方法呢?一查,果然有 visibilitychange

AlarmManager設置的定時被取消的解決方案

我用alarmmanager設定了定時任務,但是鎖屏的時候根本不會執行。查了大量資料,還是無法解決,有好的辦法嗎?(測試手機:華為相關程式碼如下:if (Build.VERSION.SDK_INT >= 19) 

iOS開發之應用內檢測手機,解狀態

iPhone的鎖屏監測分為兩種方式監聽: 1. 程式在前臺,這種比較簡單。直接使用Darwin層的通知就可以了: #import <notify.h> #define NotificationLock CFSTR("com.apple.springboa

實現:編輯短信,按power鍵,再點亮幕,進入的還是編輯短信界面,按返回鍵才會進入解界面。

亮屏 ram flags you creat att msu con sim 描寫敘述:在編輯短信界面按電源鍵鎖屏後,又一次按電源鍵點亮屏幕。並沒有進入到鎖屏界面而是在編輯短信界面。此時短信界面懸浮與鎖屏界面之上。這時按返回鍵關閉編輯短信界面。回到鎖屏界面,是怎樣實

解決蘋果手機返回不刷新問題

fff 刷新問題 color 最好的 隨機 ati 循環 數據 在微信端 問題描述: js返回上一頁的實現 : 1) history.go(-1); 2) history.bac

酷派手機壁紙提取

一個 可能 XML 鎖屏 單獨 efault http nod root 前些年從網上買了個酷派手機(Coolpad 5890)做備用機,女朋友看到後,喜歡上了這個手機的鎖屏壁紙(確實挺好看的),非要我找給她,作為一個在大學期間就玩過Android手機的IT男來說,

攻略:蘋果手機電腦 iPhone鏡像投怎麽操作

phone vpd mage oss proc 展示 tex 出現 屏幕 外出遊玩拍照已經是必不可以少的一項程序,記下美好的瞬間,回到家中,可以與家人一起分享,每個照片背後都是一個小故事,那如果全家很多人想一起瀏覽這些照片怎麽辦呢?不會只是想通過家庭群吧!那對於一些年齡稍長

蘋果手機到win10電腦需要什麼軟體?

  怎麼樣把蘋果手機投屏到win10電腦呢?很多人提出來疑問,投屏軟體用過不少的寶寶們應該都知道關於蘋果錄屏軟體也是剛出來沒多長時間,而安卓手機的錄屏軟體真是數不勝數,那麼問題來了,iOS 的Airplay連線Win10電腦需要用到哪些軟體呢?別急,今天小編就來給你們介紹這款軟體的使用方法。   蘋果錄屏軟

蘋果手機到電腦中的簡單方法

  蘋果手機投屏到電腦中的簡單方法有很多,到底哪款可以深入忍心呢?大家在平時的工作中常常需要將自己的手機投屏到電腦中,但是許多寶寶們卻找不到一款心儀的蘋果投屏軟體,今天小編在這裡就來和你們分享一款超級簡單的方法,適合蘋果手機使用者的寶寶們操作哦!   迅捷蘋果錄屏精靈http://www.xunji

蘋果手機專用軟體哪個好?

  如今使用蘋果手機的使用者沒有安卓多,所以很多軟體開發商都會選擇針對安卓手機的軟體,投屏軟體一開始只是安卓手機支援,但是現在蘋果手機也有了這個功能,畢竟這兩款手機各有各的優勢都是非常不錯的,但是蘋果專用軟體哪個好呢?下面的這篇文章就介紹的非常詳細了。   迅捷蘋果錄屏精靈http://www.

Ubuntu18.04dask to dock隱藏

簡介 Ubuntu18.04鎖屏後dask to dock預設情況下是顯示的,本文主要講解如何隱藏。 操作 將擴充套件遷移到當前使用者目錄下 sudo mv /usr/share/gnome-shell/extensions/[email prot

長沙蘋果售後維修-如何分蘋果手機內外

手機螢幕維修我想大家應該都不陌生,平時使用蘋果手機的時候難免會磕磕碰碰,很多果迷都有碎屏的經歷,有的時候只是碎了一個角,顯示正常,觸控正常,手機觸屏失靈。拿到蘋果手機維修點修,有的說換外屏,有的說換內屏。那如何分清蘋果手機內屏外屏碎了?下面蘋果售後維修就給大家詳

攻略:蘋果手機電腦 iPhone映象投怎麼操作

外出遊玩拍照已經是必不可以少的一項程式,記下美好的瞬間,回到家中,可以與家人一起分享,每個照片背後都是一個小故事,那如果全家很多人想一起瀏覽這些照片怎麼辦呢?不會只是想通過家庭群吧!那對於一些年齡稍長的人來說是不會操作的,此時是不是都會想到將小小的手機螢幕上的內容在電腦上展示

蘋果手機到電腦大幕上的方法

選擇 mar 電腦 超級 roc 但是 其它 怎麽 oss 使用過蘋果手機的朋友都知道,蘋果手機運行流暢,不管是玩遊戲、逛淘寶、還是看視頻,手機運行的速度都是流暢自如的,使用起來感覺真是超級爽,但是手機屏幕就是有點小,如果可以把手機投屏到電腦上就更加完美了,蘋果手機投屏到電

計算手機介面所有手勢密碼的組合

最近閒來無事,在網上翻看各種面試題,無意中發現了這道題,計算所有手勢密碼的組合可能,覺得挺有意思的,簡單寫了一下,與小夥伴們分享下。 題目如下: 以下是程式碼實現 package test.gesture; import java.util.ArrayList;

使用Python+uiautomator2實現手機(期望輸入的密碼,基於滑動解

業務需求:需要測試手機滑動解鎖失敗時事件的次數及等待的時間,本來想利用Python+Appium實現,但是Appium執行時自動給我解鎖了.... python-uiautomator2是一個自動化測試開源工具,僅支援Android平臺的原生應用測試 python-u