Android後台作業最佳實現(二)

2021-08-08 23:29:54 字數 2406 閱讀 4869

intelligent job-scheduling

jobscheduler還提供了高度可擴充套件的功能:如清除快取小任務是合適的,和大的如乙個資料庫同步到雲。

除了jobscheduler,還有其他一些設施可以幫助你的應用程式的工作日程。這些措施包括:

alarmmanager

firebase jobdispatcher

syncadapter

additional facilities

目前簡要介紹jobscheduler和其他api,可以幫助你的應用程式的工作時間最大化應用程式的效能和系統的健康。

android框架jobscheduler

jobscheduler是android框架api的排程任務或工作。在android5.0首次被使用,並且仍然在積極發展。值得注意的是,android7.0增加了基於

contentprovider變化而觸發排程工作的功能。

對於那些需要執行的應用程式,jobscheduler在平台上實現了收集它們任務資訊的方法。這些資訊用於排程工作執行,可能在同一時間,

以這種方式執行批量作業允許裝置更長時間進入休眠狀態,從而保持電池壽命。

你用jobscheduler註冊工作,並指定自己的網路和時間要求。然後系統地計畫執行的工作,在適當的時候。同時,它還可以延遲執行作業,

以滿足打盹和應用程式待機限制。jobscheduler提供了許多方法來定義工作的執**況。

如果你的應用程式的目標是android 5(api level 21),我們建議您使用jobscheduler執行後台任務。關於jobscheduler的更多資訊,

見其api參考文件。

alarmmanager

alarmmanager api是另一種選擇,提供任務排程框架。在應用程式需要在特定時間發布通知或設定警報的情況下,此api

非常有用。當必須執行乙個特定時間的任務時,你應該只使用這個api,而不需要其他的。jobscheduler允許你指定執行條件,如設

備閒置和充電檢測。

firebase jobdispatcher是乙個開源的庫,提供了乙個api類似jobscheduler在android平台。firebase jobdispatcher

作為乙個針對android版本低於5的應用程式相容性層(jobscheduler api level 21)。

例如,你可能會

你使用firebase jobdispatcher(api級別21)。決定使用jobscheduler或自己寫的,自定義**。由於這種多樣性,我

們建議,如果你的應用程式的目標是乙個android版本低於5,你使用firebase jobdispatcher(api級別21)。

關於firebase jobdispatcher的更多資訊,參考其文件和源**。

除了上面描述的api和庫之外,還有同步介面卡和服務,可以在特定的條件下使應用程式效能更好、更健壯。

syncadapter

框架繼續提供syncadapter類管理裝置和伺服器之間同步資料。同步介面卡是專門為同步裝置和雲之間的資料,如果你的任務是這個,你應該只使用這種方法。

但是,同步介面卡實現比庫和上面提到的api更複雜的方法,因為他們至少需要乙個假authenticatorand內容提供者。由於這些原因,通常不應該建立同步介面卡,

以便將資料同步到後台的雲中。只要有可能,你應該使用的jobscheduler、firebase jobdispatcher,或者gcm網路管理。

在android中n(api級別24),該syncmanager級別在jobscheduler之上。你應該只使用syncadapter類如果你要求它提供了額外的功能。

您應該避免使用永久執行或執行週期性工作的啟動服務,因為即使它們沒有執行有用的任務,它們仍將繼續使用裝置資源。相反,您應該使用本頁描述的其他解決方案,並提供原生生命週期管理。使用啟動服務只是最後的手段。android平台

在未來可能不支援啟動的服務。

無論你採用的解決方案,請注意以下幾點:

圈養的網際網路門戶**,vpn和**可以構成網路連通性檢測問題。乙個庫或api可能會認為網際網路是可用的,但是你的服務可能無法訪問。請重新安排你的任務以減少失敗次數

根據您為執行某個任務分配的條件(如網路可用性),在任務被觸發後,可能會發生更改,使這些條件不再滿足。在這種情況下,你的操作可能會失敗,或者失敗多次。出於這個原因,您應該編寫後台任務邏輯,以注意任務何時持續失敗,並執行指數回退,以避免無意中過度使用資源。

記得使用指數退避時重新安排的任何工作,尤其是當使用alarmmanager。如果你的應用程式使用jobscheduler,firebase jobdispatcher,或同步介面卡,自動使用指數退避。

實現Android後台發郵件

2 郵件資訊 因為我們是後台傳送郵件,因此需要收集一些必要資訊,因為不需要使用者輸入這些資訊。如下 上面這些都是我們傳送郵件的時候需要用到的資訊。這裡需要注意的是,我們傳送後台郵件需要給出賬號密碼等敏感資訊。這些郵件資訊,我們可以在程式裡面編寫好,這樣我們傳送郵件的時候,就不需要使用者輸入任何資訊。...

Android如何實現後台傳送簡訊

直接利用smsmanager,就可以實現後台簡訊的傳送。註冊許可權 實現 獲取資訊內容 string message 移動運營商允許每次傳送的位元組資料有限,我們可以使用android給我們提供 的簡訊工具。if message null 說明 sms.sendtextmessage destina...

Android後台定時提醒功能實現

考慮到自己每次在敲 或者打遊戲的時候總是會不注意時間,一不留神就對著電腦連續3個小時以上,對眼睛的傷害還是挺大的,重度近視了可是會遺傳給將來的孩子的呀,可能老婆都跟別人跑了。於是,為了保護眼睛,便做了個如下的應用 開啟後效果 service 使用service,便可以在程式即使後台執行的時候,也能夠...