Android - Application

一、概念

二、使用

2.1 多进程下Application多次创建问题

通常会将一些初始化代码放在 Application 中,而每当运行指定了进程的组件时都会新建一个 Application 对象,由于不是同一个所以数据不通用,只需要在 Application 类中对当前进程加以判断即可。

Kotlin 复制代码
override fun onCreate() {
    super.onCreate()
    if (isMainProcess()) init() //确保在主进程下才初始化(多进程会导致Application重复创建)
}
/**
 * 当前进程是否为主进程
 */
private fun isMainProcess(): Boolean {
    val activityManager = getSystemService(ACTIVITY_SERVICE) as ActivityManager
    val runningProcesses = activityManager.runningAppProcesses
    if (runningProcesses != null) {
        for (process in runningProcesses) {
            if (packageName.equals(process.processName)) {
                return true
            }
        }
    }
    return false
}

2.2 保存全局数据问题

onLowMemory()、onTrimMemory() 两个方法(Activity中也有)可以实现自己的内存回收逻辑(关闭数据库连接、移除图片缓存)来降低内存消耗,从而避免被系统杀死的风险。

相关推荐
恋猫de小郭20 小时前
你是不是觉得 R8 很讨厌,但 Android 为什么选择 R8 ?也许你对 R8 还不够了解
android·前端·flutter
城东米粉儿21 小时前
Android Glide 笔记
android
城东米粉儿1 天前
Android TheRouter 笔记
android
城东米粉儿1 天前
Android AIDL 笔记
android
城东米粉儿1 天前
Android 进程间传递大数据 笔记
android
城东米粉儿1 天前
Android KMP 笔记
android
冬奇Lab1 天前
WMS核心机制:窗口管理与层级控制深度解析
android·源码阅读
松仔log1 天前
JetPack——Paging
android·rxjava
城东米粉儿1 天前
Android Kotlin DSL 笔记
android