Android ApplicationContext接口深入分析
需求
Android(Kotlin)獲取應(yīng)用全局上下文 ApplicationContext。
希望可以在應(yīng)用內(nèi)任意位置獲取上下文,而不是僅在 Activity 或 Service 里才能獲取。
ApplicationContext 是和應(yīng)用全局相關(guān)的。
實(shí)現(xiàn)方法
- 自定義 MyApplication,保存自身的 Application 實(shí)例。
- MyApplication 配置到 AndroidManifest 中。
- 定義頂層屬性 appContext,獲取 Application 實(shí)例的applicationContext。
代碼
package com.example.fileio
import android.app.Application
/**
* 自定義 Application
*/
class MyApplication : Application() {
companion object {
lateinit var application: Application
}
init {
application = this
}
}<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<application
android:name=".MyApplication"
</application>
</manifest>上下文工具類 ContextUtil.kt
package com.example.fileio.util import android.content.Context import com.example.fileio.MyApplication val appContext: Context = MyApplication.application.applicationContext
調(diào)用
可以在應(yīng)用內(nèi)任意位置獲取 ApplicationContext。

Application
用于維護(hù)全局應(yīng)用程序狀態(tài)的基類。
Application | Android Developers (google.cn)

getApplicationContext()
返回當(dāng)前進(jìn)程的單個(gè)全局Application對(duì)象的上下文。
當(dāng)需要一個(gè)生命周期與當(dāng)前上下文分離的上下文時(shí),才應(yīng)該使用該上下文。
該上下文與進(jìn)程的生命周期關(guān)聯(lián),而不是與當(dāng)前組件相關(guān)聯(lián)。

參考


到此這篇關(guān)于Android ApplicationContext接口深入分析的文章就介紹到這了,更多相關(guān)Android ApplicationContext內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
android使用DataBinding來(lái)設(shè)置空狀態(tài)
本篇文章主要介紹了android使用DataBinding來(lái)設(shè)置空狀態(tài),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-03-03
Android Studio 代理配置指南(小結(jié))
這篇文章主要介紹了Android Studio 代理配置指南(小結(jié)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01
Android 自定義view之畫圖板實(shí)現(xiàn)方法
本文重在對(duì)自定義view,以及其常用類,常用方法的初步了解,提供一個(gè)思路,效果是其次,畫板只是例子,需要的朋友可以參考下2018-01-01
Android10 分區(qū)存儲(chǔ)的適配規(guī)則
Android設(shè)備 在Sdk29己以上推出了分區(qū)存儲(chǔ),類似iOS沙箱。應(yīng)用App 目標(biāo)版本號(hào)為29或以上則需要適配分區(qū)存儲(chǔ),本文將具體的講解適配規(guī)則2021-05-05
Android中通知欄跳動(dòng)問(wèn)題解決方法
這篇文章主要介紹了Android中通知欄跳動(dòng)問(wèn)題解決方法,導(dǎo)致這個(gè)問(wèn)題的原因是when這個(gè)屬性值,默認(rèn)它是使用的系統(tǒng)當(dāng)前時(shí)間,這就是導(dǎo)致跳動(dòng)問(wèn)題的原因,指定一個(gè)固定時(shí)間即可解決這個(gè)問(wèn)題,需要的朋友可以參考下2015-01-01
詳解MVP模式在Android開(kāi)發(fā)中的應(yīng)用
MVP是MVC衍生而來(lái)的,很早以前就由某軟公司提出,近年來(lái)在Android應(yīng)用開(kāi)發(fā)中越來(lái)越多的被提及,越來(lái)越重要了。這篇文章主要介紹了詳解MVP模式在Android開(kāi)發(fā)中的應(yīng)用,有興趣的可以了解一下。2016-11-11
實(shí)例詳解Android解決按鈕重復(fù)點(diǎn)擊問(wèn)題
在項(xiàng)目中,由于網(wǎng)絡(luò)問(wèn)題,不知道這個(gè)按鈕被點(diǎn)擊了幾次,為了防止這一問(wèn)題發(fā)生,下面小編寫了一段實(shí)例代碼給大家詳解android解決按鈕重復(fù)點(diǎn)擊問(wèn)題,對(duì)android按鈕重復(fù)點(diǎn)擊相關(guān)知識(shí),感興趣的朋友一起學(xué)習(xí)吧2015-12-12
源碼解析Android Jetpack組件之ViewModel的使用
Jetpack 是一個(gè)豐富的組件庫(kù),它的組件庫(kù)按類別分為 4 類,分別是架構(gòu)(Architecture)、界面(UI)、 行為(behavior)和基礎(chǔ)(foundation)。本文將從源碼和大家講講Jetpack組件中ViewModel的使用2023-04-04

