tags: APP
Android
Common 簡介
概念
- 四大組件 (四位主角) 和其他演員 (Button,TextView,LinearLayout …),必須工作在鏡頭 (Context) 環境下才能將戲傳遞給觀眾
- Context 子類別
- ContextImpl:實作 Context
- ContextWrapper:包裝、封裝,且初始化過程會創建ContextImpl實作Context
- ContextThemeWrapper:Activity 需要主題
- Service, Application:不需要主題,因為不需要介面,完全在背景處理
Application 和 四大組件
-
Application:通過Activity或Service的
getApplication()
方法獲取,也可以在任何繼承Context類的的對像中通過getApplicationContext()
來獲取 -
Activity:有介面。繼承自ContextWrapper,對應的context對像都是唯一的
-
Services:背景執行服務。繼承自ContextWrapper,對應的context對像都是唯一的
-
BroadReceiver:不擁有Context,通過
onReceiver()
方法傳入一個Context對象 -
ContentProvider:管理中央資料存放庫的存取權。不擁有Context,通過
getContext()
方法傳入一個context對象
會使用到 Context 的 Case
- 啟動Activity (startActivity)
- 啟動Service (startService)
- 彈出Toast
- 發送廣播(sendBroadcast), 註冊廣播接收者(registerReceiver)
- 獲取ContentResolver (getContentResolver)
- 獲取類加載器(getClassLoader)
- 打開或創建 資料庫(openOrCreateDatabase)
- 獲取資源(getResources)
Context 作用域
補充說明
- 這3個任務:“Show a Dialog”, “Start a Activity”, "Layout Inflation:,是讓Activity來處理這些與UI有關的任務
- 1,2,3註解:
- 這幾個Context只有Activity的Context是“看的見的”,其他組件的Context都是“看不見的”
- 看的見的:Dialog,Activity等,就必須要用Activity的Context
- 看不見的:調用getString或getResource方法獲取res文件夾下的資源時,所有的Context對像都可以使用
如何取得 Context
方法1:View.getContext()
- 返回當前View對象的Context對象,通常是當前正在展示的Activity對象.
- 範例:
TextView tv = new TextView(getContext());
方法2:Activity.getApplicationContext()
- 獲取當前Activity所在的應用的Context對象
方法 | 說明 |
---|---|
getApplication() | 用來獲取Application實例的,而 Application 本身就是一個 Context ,所以在 Activity 和 Service 使用這兩個方法的結果是一樣的。 |
getApplicationContext() | 但BroadcastReceiver 中也想獲得 Application 的實例,就必須使用此方法 |
- 範例:
ListAdapter adapter = new SimpleCursorAdapter(getApplicationContext(), ...);
方法3:this 或 Activity.this
- 返回當前的Activity
方法4:ContextWrapper.getBaseContext()
- 獲取一個ContextWrapper進行裝飾之前的Context
- 不常用
補充:生命週期比較
方法 | 生命週期 |
---|---|
getApplicationContext() | Application,Application摧毀它才摧毀 |
this 或 Activity.this | Activity,Activity摧毀它才摧毀 |
getBaseContext() | 返回由構造函數指定或setBaseContext()設置的context |
Reference 參考資料
- Context 圖片:
https://sites.google.com/site/terrylai14/home/android-context-yuan-li - 理解Android Context:http://gityuan.com/2017/04/09/android_context/
- Context 都沒弄明白,還怎麼做 Android 開發?
https://read01.com/zh-tw/aQKAKQ.html#.WsMvCIhuZPY - Context,什麼是Context?
http://bxbxbai.github.io/2014/07/16/context/ - What is ‘Context’ on Android?
https://stackoverflow.com/questions/3572463/what-is-context-on-android - android学习—— context 和 getApplicationContext():https://blog.csdn.net/janronehoo/article/details/7348566
B3E94
回覆刪除kucoin
bitget
mexc
canlı sohbet odaları
okex
bitcoin hesabı nasıl açılır
kripto para telegram
kripto para haram mı
kripto para nereden alınır
AEA2A
回覆刪除güneş paneli fiyatları
sanal sunucu
Tiktok Takipçi
dedicated server
Reseller Hosting
Yapay Zeka Seslendirme
Metin2 Sunucu Kiralama
Silkroad Sunucu
sunucu kiralama