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 上下文。