Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發 >> 關於android開發 >> 【Android】15.1 後台任務和前台任務,android15.1

【Android】15.1 後台任務和前台任務,android15.1

編輯:關於android開發

【Android】15.1 後台任務和前台任務,android15.1


分類:C#、Android、VS2015;

創建日期:2016-02-29

一、簡介

Android的活動(Activities)可以有多種狀態,具體取決於用戶的行為以及對操作系統的要求。雖然Activity的生命周期會隨著狀態的變化而改變,比如創建活動、轉入後台、轉到前台、銷毀活動等,但是,實際上Acivity並不能在後台做任何實質性的UI交互處理。由於這個原因,Android才將在後台運行的進程稱為Service,其本質含義就是:Service是獨立運行的類的實例,它和Activity的生命周期並沒有直接的關系。此外,在活動的生命周期期間,設計良好的應用程序不應該獨占資源或導致應用程序崩潰。

1、後台任務(Backgrounding)

Android在後台處理的那些事(Backgrounding)實際上是前台應用程序和後台服務(Service)之間一種折中的解決辦法,換言之,通過Backgrounding可以讓設備資源不會消耗太快同時又能盡量響應前台的請求。

從功能上來說,Android應用程序中的後台任務(Backgrounding)非常類似於桌面應用程序的多任務,但它和桌面應用的多任務並不是一個概念。桌面計算機一般都有應用程序可用的多種資源,如大屏幕、電源、內存、各種外存等,因此這些應用程序可以一個接一個地排列顯示在屏幕上同時運行,而且都能保持高性能。但是,移動應用程序的資源極其有限,很難在那麼小的屏幕上同時顯示多個高速運行的應用程序,因為真要這樣做的話,手機電池的電量很快就會耗盡。

處於後台狀態下的Activity實際上是不能執行任何操作的,因此它又提供了一個Android專用的Service的概念(Android Service)。之所以這樣做,就是為了在Android App中啟用後台處理,即通過提供調用應用程序組件的方式來實現Android Service。

Android Service通常仍屬於所創建的應用程序的一部分,但他們在自己的生命周期中獨立運行,與Activity的生命周期無關。這意味著即便用戶將應用程序轉入後台,服務仍然可以繼續執行,甚至在操作系統停止或已銷毀了所有應用程序活動的情況下,服務也照樣可以繼續執行。

對於後台運行的活動(Activities)來說,Android和iOS的處理方式是不同的。在Android系統中,Activities是用轉入、轉出後台的狀態來體現的,這些狀態是Activity生命周期的一部分。而iOS處理的辦法則是將沒有運行的活動直接轉入到後台,同時,為了節省系統資源,轉入到後台後不久就會停止它,即不再允許這些轉入後台的活動運行任務。

下面的概覽圖列出了在Android App中哪些情況下應該使用哪種後台技術,請仔細研究這個圖,它能幫你快速理解相關的概念和需要采用的技術。

2、前台任務(Forgrounding)

前台任務(Forgrounding)是指在Android在前台處理那些經常會被用戶關注的後台Service,這些Service的特點是:內存過低時它不會自動成為被殺死的對象。前台任務必須向用戶提供一個通知,而且只有在後台服務被終止或從前台任務中被移除之後,此通知才能消失。

例如,用後台服務來播放音樂的播放器就應該將其作為前台任務來處理,因為這能讓用戶通過前台通知(Notification)清楚地知曉後台服務的運行情況。在前台任務中,通知可能會標明當前正在播放的歌曲,並允許用戶啟動一個activity來與播放器進行交互。

要把你的後台服務作為前台任務來處理(這個任務就是在前台利用通知告訴用戶正在運行的後台服務當前的情況),可以調用StartForeground()方法。此方法至少有兩個參數:一個是通知的標識號(整數值),另一個是提供通知的Notification對象。另外還可以在這個方法中再添加更多的參數,比如,你可以每過1秒就告訴用戶一次,也可以過1分鐘才告訴用戶一次。

要移除前台任務,請調用StopForeground()方法,這個方法接受一個布爾型參數,表示是否同時移除通知。此方法不會終止後台服務。不過,如果後台服務被你顯式終止了,那麼通知也會同時被移除。

注意:StartForeground()和StopForeground()方法是自Android 2.0 (API Level 5)開始引入的。 要讓後台服務能在更早版本的平台上作為前台任務來處理,你必須使用以前提供的SetForeground()方法而不是StartForeground()方法。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved