在iOS中後台執行程式

2022-10-10 11:21:06 字數 626 閱讀 5501

ios預設是不支援程式的後台執行的,但是也提供了一些途徑來使得程式能後在切入後台時也正常工作。

其中拋開常見的後台**等擦邊球手段,比較正規的就是聲請乙個後台任務,但是任務的執行時間被限制為10分鐘,並且在10分鐘之後再次聲請也不會成功。

本文採用的手段就是在聲請10分鐘的任務時間到達時利用乙個while(true)將當次runloop掛起等待程式切回時再跳出。

核心**如下

聲請後台任務

2__block uibackgroundtaskidentifier background_task;3//

create a task object

5[self hold];

67 background_task =uibackgroundtaskinvalid;

8 }];

hold住限時任務結束時的runloop

1 - (void

)hold

29 }

之後作者發現不需要先聲請10分鐘限時後台任務,直接在程式切出後台時掛起乙個while(true)就可以達到相同的效果。

實驗證明不申請後台task程式雖然會執行,但是切出去後返回無法正常顯示ui。

原始碼參見

在Linux中後台執行程式

由於網路等原因,當ssh鏈結斷開後,該會話中的程序會收到核心發出的sig hup 掛機 訊號,預設情況下程式會結束執行。所以想要長期穩定地執行乙個程序,可以將其放入後台。一種簡單方法是用shell的作業控制機制來實現。執行python test.py時,只需在shell中輸入以下命令 nohup p...

Linux後台執行程式

shell command dev null 2 1 最後乙個符號 意思是讓程式在後台執行。dev null 的作用是將標準輸入轉向null,這樣就忽略當前的指令碼標準輸出。2 1 的作用是將標準錯誤連線至標準輸出,也將被忽略。一直不明白1 2的作用。原來!作業系統預設指定3個檔案 0標準輸入 1標...

shell 後台執行程式

1.最經常被用到 這個用在乙個命令的最後,可以把這個命令放到後台執行 2.ctrl z 可以將乙個正在前台執行的命令放到後台,並且暫停 3.jobs 檢視當前有多少在後台執行的命令 4.fg 將後台中的命令調至前台繼續執行 如果後台 中有多個命令,可以用 fg jobnumber將選中的命令調出,j...