Android Activity 上下文和 Application 上下文的區別


什麼是上下文(Context)?

上下文為我們提供了應用程式當前狀態的資訊。它允許我們與 Android 元件進行互動。它允許我們訪問檔案和其他資源,例如圖片、活動、片段和服務。Context 類提供了訪問構建 Android 應用程式所需的一些資源和服務的途徑,包括:

  • 資源 - 透過 Context 可以訪問儲存在資源物件中的資源,例如佈局、圖片和字串。

  • 系統服務 - 它提供對系統服務的訪問,例如電源管理器、通知管理器和位置管理器。

  • 偏好設定 - 偏好設定用於以鍵值對的形式儲存和檢索資料,可以透過 Context 進行訪問。

  • 資產管理器 - 用於訪問與應用程式打包在一起的原始資產檔案。

  • 資料庫 - 它提供對應用程式使用的資料庫的訪問。

上下文(Context)的兩種型別是什麼?

上下文有兩種型別,如下所示:

  • Activity 上下文

  • Application 上下文

在 Android 中,“Activity”和“Application”都是“Context”類的子類,它提供了對應用程式特定資源和類的訪問。

這兩種上下文的主要區別在於,“Activity”上下文與“Activity”的生命週期繫結,而“Application”上下文與整個應用程式的生命週期繫結。

什麼是 Android 中的 Activity 上下文?

當你使用任何“Activity”上下文時,它都與你當前所在的 Activity 繫結。這意味著如果 Activity 被銷燬,上下文也將被銷燬。當需要訪問與特定 Activity 繫結的資源或類(例如特定於該 Activity 的檢視或資源)時,應該使用 Activity 上下文。

Activity 上下文提供的功能

  • 啟動 Intent - 使用 startActivity() 或 startActivityForResult() 方法啟動新的 Activity 或服務。

  • 資源訪問 - 透過 getResources() 方法訪問資源,例如字串、佈局和圖片。

  • 檢視載入 - Activity 上下文用於藉助 LayoutInflator 載入檢視。

  • 對話方塊建立 - 用於建立 Alert 對話方塊和進度對話方塊。

  • 操作欄 - 用於管理操作欄,例如設定標題、圖示和導航。

什麼是 Android 中的 Application 上下文?

另一方面,“Application”上下文與應用程式本身繫結,並且只要應用程式正在執行,它就會保持存活狀態。這意味著它可以在多個 Activity 中使用,並且對於訪問與任何特定 Activity 無關的全域性資源和類(例如共享首選項或資料庫幫助程式)非常有用。

Application 上下文提供的功能

  • 資源訪問 - 透過 Resource 類訪問應用程式資源,例如佈局、尺寸、字串。

  • 應用程式級資訊訪問 - 透過 Package Manager 類提供與應用程式相關的資訊,例如包名、應用程式名稱、應用程式版本。

  • 應用程式級廣播 - 使用 registerReceiver() 和 sendBroadCast() 方法傳送和接收應用程式級廣播。

  • 資源快取 - 使用資源(例如佈局和可繪製物件)來提高應用程式效能。

Activity 上下文和 Application 上下文的區別

Activity 上下文

Application 上下文

Activity 上下文的生命週期比 Application 上下文短。它與 Activity 一起建立和銷燬。

Application 上下文在應用程式啟動時建立,並在應用程式終止時一直存在。

Activity 上下文的生命週期較短,可以隨 Activity 一起銷燬。

Application 上下文的生命週期較長,在應用程式的整個生命週期中都駐留在記憶體中。

Activity 上下文僅限於當前 Activity,例如片段和檢視。

Application 上下文可用於整個應用程式,包括所有 Activity 及其元件。

結論

總之,如果需要訪問與特定 Activity 繫結的資源,請使用 Activity 上下文。如果需要訪問與任何特定 Activity 無關的資源,請使用 Application 上下文。

更新時間: 2023年5月9日

3K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告