Android ApplicationContext接口深入分析

目录
  • 需求
  • 实现方法
  • 代码
  • 调用
  • Application
  • getApplicationContext()
  • 参考

需求

Android(Kotlin)获取应用全局上下文 ApplicationContext。

希望可以在应用内任意位置获取上下文,而不是仅在 Activity 或 Service 里才能获取。

ApplicationContext 是和应用全局相关的。

实现方法

  • 自定义 MyApplication,保存自身的 Application 实例。
  • MyApplication 配置到 AndroidManifest 中。
  • 定义顶层属性 appContext,获取 Application 实例的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

调用

可以在应用内任意位置获取 ApplicationContext。

Application

用于维护全局应用程序状态的基类。

Application | Android Developers (google.cn)

getApplicationContext()

返回当前进程的单个全局Application对象的上下文。

当需要一个生命周期与当前上下文分离的上下文时,才应该使用该上下文。

该上下文与进程的生命周期关联,而不是与当前组件相关联。

参考

到此这篇关于Android ApplicationContext接口深入分析的文章就介绍到这了,更多相关Android ApplicationContext内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Android开发中Signal背后的bug与解决

    目录 背景 出现SIGABRT的原因 SIGSEGV被捕获但是调用jni无法进行 小结 背景 熟悉我的老朋友可能都知道,之前为了应对crash与anr,开源过一个“民间偏方”的库Signal,用于解决在发生crash或者anr时进行应用的重启,从而最大程度减少其坏影响. 在维护的过程中,发生过这样一件趣事,就是有位朋友发现在遇到信号为SIGSEGV时,再调用信号处理函数的时候 void SigFunc(int sig_num, siginfo *info, void *ptr) { // 这里判

  • Android 获取实时网速实现详解

    目录 正文 TrafficStats简介 实现获取网速 实时网速 正文 最近接到个需求,需要计算WebView加载网页时的网速.查询了一下,Android没有提供直接获取网速的Api,但是提供了获取流量的类TrafficStats.本文介绍如何使用Trafficstats来实现获取网速功能. TrafficStats简介 TrafficStats提供了一些获取设备从本次开机到目前为止传输/接收的流量的接口,如下: 方法 参数 说明 getTotalTxBytes - 获取设备本次开机到目前为止,

  • Android O对后台Service限制详解

    目录 Service问题 什么是前台应用 前台Service和后台Service 后台Service限制 解决后台Service限制 Service问题 Service没有界面,运行于后台,它会消耗设备资源,并且可能会导致不好的用户体验,例如资源占用过多,导致设备运行不流畅.为了缓解这个问题,Android O版本(Android 8.0, API 26)对后台Service强加了一些限制.注意,只是对后台Service加了限制,前台Service不受影响. 什么是前台应用 在解释后台Servi

  • Android 控件自动贴边实现实例详解

    目录 正文 判断交互 隐藏与显示 示例 正文 最近接到个需求,需要在用户与App交互时,把SDK中之前实现过的悬浮控件贴边隐藏,结束交互后延迟一段时间再自动显示.本篇文章介绍一下实现的思路. 判断交互 用户与App交互.结束交互可以通过监听触摸事件来实现.建议使用的Activity的dispatchTouchEvent,Activity下的所有触摸事件分发时都会回调此方法,代码如下: class AutoEdgeHideActivity : BaseGestureDetectorActivity

  • Android Jetpack导航组件Navigation创建使用详解

    目录 引言 依赖项 创建导航图 导航宿主 导航到目的地 传递参数 NavigationUI 多模块导航 引言 导航是指支持用户导航.进入和退出应用中不同内容片段的交互.Android Jetpack 的导航组件可实现导航,无论是简单的按钮点击,还是应用栏和抽屉式导航栏等更为复杂的模式,该组件均可应对. 依赖项 def nav_version = "2.5.2" implementation "androidx.navigation:navigation-fragment-kt

  • Google 开发Android MVP架构Demo深入解析

    目录 1.什么是MVP? 2.Google官方的MVP 3.V1.1 My MVP V1 4.V1.2 My MVP V2 1.什么是MVP? Google在2016年推出了官方的Android MVP架构Demo,本文主要分析一下官方的MVP Demo,并且借由自己的一些经验,提出一些学习过程中,遇到的问题和自己的改进.封装措施. MVP架构已经推出很多年了,现在已经非常普及了,我在这里就不过多介绍,简单的说,它分为以下三个层次: Model:数据模型层,主要用来数据处理,获取数据: View

  • Android 使用Toolbar实现应用栏实例详解

    目录 使用Toolbar实现应用栏 应用栏功能扩展 返回 菜单 使用Toolbar实现应用栏 App中应用栏是十分常见的,通常应用栏会显示当前页面的标题,还有一些操作按钮,例如返回.搜索.扫码等.本文介绍如何通过Toolbar实现应用栏. 使用Toolbar来实现应用栏,需要在AndroidManifest中设置NoActionBar的主题,并且Activity需要继承AppCompatActivity. <?xml version="1.0" encoding="ut

  • Android 搜索框架使用详解

    目录 搜索框架简介 使用搜索框架实现搜索功能 可搜索配置 搜索页面 使用SearchView 使用搜索弹窗 搜索弹窗对Activity生命周期的影响 附加额外的参数 语音搜索 搜索记录 创建SearchRecentSuggestionsProvider 修改可搜索配置 在搜索页面中保存查询 清除搜索历史 示例 搜索框架简介 App中搜索功能是必不可少的,搜索功能可以帮助用户快速获取想要的信息.对此,Android提供了一个搜索框架,本文介绍如何通过搜索框架实现搜索功能. Android 搜索框架

  • Android ApplicationContext接口深入分析

    目录 需求 实现方法 代码 调用 Application getApplicationContext() 参考 需求 Android(Kotlin)获取应用全局上下文 ApplicationContext. 希望可以在应用内任意位置获取上下文,而不是仅在 Activity 或 Service 里才能获取. ApplicationContext 是和应用全局相关的. 实现方法 自定义 MyApplication,保存自身的 Application 实例. MyApplication 配置到 And

  • SpringBoot ApplicationContext接口深入分析

    目录 ApplicationContext简述 Spring IOC容器实现方式 ApplicationContext接口梳理 AnnotationConfigApplicationContext MessageSource 修改Springboot application.yml配置 创建国际化资源文件 ApplicationEventPublisher ResourcePatternResolver EnvironmentCapable Lifecycle Closeable BeanFac

  • Android Socket接口实现即时通讯实例代码

    Android Socket接口实现即时通讯 最近学习Android 通信的知识,做一个小实例,巩固下学习内容,以下内容是网上找的资料,觉得很不错,知识比较全面,大家看下. 首先了解一下即时通信的概念.通过消息通道 传输消息对象,一个账号发往另外一账号,只要账号在线,可以即时获取到消息,这就是最简单的即使通讯.消息通道可由TCP/IP UDP实现.通俗讲就是把一个人要发送给另外一个人的消息对象(文字,音视频,文件)通过消息通道(C/S实时通信)进行传输的服务.即时通讯应该包括四种形式,在线直传.

  • Android Parcelable接口使用方法详解

     Android Parcelable接口使用方法详解 1. Parcelable接口 Interface for classes whose instances can be written to and restored from a Parcel. Classes implementing the Parcelable interface must also have a static field called CREATOR, which is an object implementin

  • Android权限机制深入分析讲解

    目录 1.权限 2.在程序运行时申请权限 1.权限 普通权限:不会直接威胁到用户安全和隐私的权限 危险权限:那些可能会触及用户隐私或者对设备安全性造成影响的权限. 到Android 10 系统为止所以的危险权限 2.在程序运行时申请权限 普通权限申请:系统会自动帮我们进行授权,不需要用户手动操作. 危险权限申请:在Android6.0及以上系统在使用时必须进行运行时权限处理. 危险权限申请步骤 (1)判断用户是否给我们授权了. checkSelfPermission()方法,第一个参数是Cont

  • Spring ApplicationContext接口功能详细介绍

    第一步,我们先来看这个接口的内部结构,了解别人的内部,知己知彼,百战不殆: 这个接口的扩展功能主要体现在它继承的四个接口上: MessageSource:国际化功能 ResourcePatternResolver: 资源访问功能 ApplicationEventPublisher: Spring事件发布者功能 EnvironmentCapable:提供当前系统环境 Environment 组件功能 国际化功能演示 查看对应的方法: 准备翻译资源信息: --------messages_en.pr

  • 深入理解Android之接口回调机制

    刚开始学对于这个机制理解不够深刻,现在重新整理下思路.开发中,接口回调是我们经常用到的. 接口回调的意思即,注册之后并不立马执行,而在某个时机触发执行. 首先解决啥是回调: 举个例子:某天,我打电话向你请教问题,当然是个难题,你一时想不出解决方法,我又不能拿着电话在那里傻等,于是我们约定:等你想出办法后打手机通知我,这样,我就挂掉电话办其它事情去了.过了XX分钟,我的手机响了,你兴高采烈的说问题已经搞定,应该如此这般处理. C不会自己调用b,C提供b的目的就是让S来调用它,而且C不得不提供.S并

  • 详解Android中接口回调、方法回调

    在Android开发中我们很多地方都用到了方法的回调,回调就是把方法的定义和功能导入实现分开的一种机制,目的是为了解耦他的本质是基于观察者设计模式,即观察者设计模式的的简化版,例如:在下载时候的进度回调,在adapter与activity之间的回调,在javabean和fragment以及fragment之间的回调等等,回调的目的主要有两个:其一是传递数据,其二是保持数据的同步更新.常用的有两种形式,一是使用内部类的形式,得到接口的子类对象,另一种是直接实现定义的接口. 一.内部类的形式 1.在

  • android生命周期深入分析(二)

    在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的.当一个程序或其某些部分被请求时,它的进程就"出生"了:当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个 进程就"死亡"了.可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制.这和我们编写桌面应用程序时的思维有一些不同,一个桌面应用程序的进程也是在其他进程或用户请求时被创 建,但是往往是在程序自身收到关闭请求后执行一个特定的动作(比如

  • android生命周期深入分析(一)

    Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情. 例举了 7 个常用的钩子: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onStop() protected void onRestart() prot

随机推荐