為什麼不建議在廣播中啟動乙個執行緒做任務

2021-08-08 11:32:59 字數 483 閱讀 4497

**

首先需要知道:

1,這裡所說的廣播是靜態廣播

2,廣播是執行在ui執行緒,阻塞15s會anr

3,當android程式第一次執行時會啟動乙個程序和乙個ui執行緒(不考慮多程序,多執行緒等)

乙個未執行的程式接受到乙個廣播後的流程:

1,啟動程式程序

2,啟動ui執行緒和呼叫廣播的 onreceive(context context, intent intent)方法

3,onreceive方法返回後,程序和執行緒處於等待狀態;系統任意時刻可以終止和**該執行緒和程序占有資源(記憶體)

如果:在onreceive開啟乙個執行緒做任務,任務未做完系統有可能**程序,做任務的執行緒就沒有對應的程序上下文,會被**,任務就有可能未完成。

所以建議在onreceive中啟動乙個服務(再在服務中開執行緒做任務)做長時間任務。這樣程式程序為後台程序(沒有使用startforeground)系統就不會任意時刻**此程序

為什麼Vue中的v if和v for不建議一起用?

v if 指令用於條件性地渲染一塊內容。這塊內容只會在指令的表示式返回 true 值的時候被渲染 v for 指令基於乙個陣列來渲染乙個列表。v for 指令需要使用 item in items 形式的特殊語法,其中 items 是源資料陣列或者物件,而 item 則是被迭代的陣列元素的別名 在 v...

在乙個程式中啟動另外乙個程式

最近剛剛開始工作,發現在學校學習的那些基本上知識打打基礎而已,在實際的專案運作中根本就沒用。革命尚未成功,通知仍需努力啊 嘿嘿 上正題 因為我們需要做乙個類似於監控的系統,這樣的話就涉及到多個程式需要同時執行,並且需要有乙個程式 去控制另外乙個程式,之前沒有做過,也沒見過,不過還好,有一同事之前做過...

為什麼在乙個類中定義的函式預設是inline的

1.首先要說明的是乙個inline函式具有靜態鏈結 static linkage 不會被檔案以外者看到。2.編譯是分模組進行的 不同的編譯模組指不同的檔案 使用 include把類的標頭檔案包含進來,在預處理階段會進行文字替換。如果此時在.件中定義了類的函式,那麼包含了inlcude的檔案在編譯的時...