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中也有)可以实现自己的内存回收逻辑(关闭数据库连接、移除图片缓存)来降低内存消耗,从而避免被系统杀死的风险。

相关推荐
石山代码10 小时前
KMP全栈开发:从Android到AI Agent的技术演进与实践
android·人工智能
plainGeekDev12 小时前
NullPointerException → Kotlin 空安全
android·java·kotlin
2501_9160088914 小时前
苹果上架工具怎么选 不用 Mac 上架 App Store 的几种方案
android·macos·ios·小程序·uni-app·iphone·webview
jijihusong00616 小时前
KMP全栈开发教程:从Android到AI Agent
android·人工智能
_祝你今天愉快17 小时前
Android Binder 驱动 - 内核驱动层源码初探
android
stevenzqzq17 小时前
【无标题】
android
梦幻通灵18 小时前
Notepad++格式化Json两种方案【持续更新】
android·json·notepad++
1024+19 小时前
YOLO 转 RKNN 识别率降低调优操作手册(新手篇)
android·yolo·kotlin
木易 士心20 小时前
深度解析 Android 音频焦点处理与实战开发
android·音视频
祉猷并茂,雯华若锦21 小时前
Appium 3.x安卓APP企业级安装实战
android·appium