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

相关推荐
云游云记14 小时前
php自动加载
android·php·android studio
警醒与鞭策14 小时前
Cursor Agent Skill 原理及LLM , Agent, MCP ,Skill区别
android·unity·ai·cursor
TheNextByte114 小时前
如何将通话记录从Android传输到PC
android
灵感菇_14 小时前
Android Fragment全面解析
android·生命周期·fragment
web_Hsir14 小时前
uniapp + vue2 + pfdjs + web-view 实现安卓、iOS App PDF预览
android·前端·uni-app
一起养小猫14 小时前
Flutter for OpenHarmony 实战:Container与Padding布局完全指南
android·flutter·harmonyos
HeDongDong-14 小时前
详解Kotlin的各种类(使用场景导向)
android·开发语言·kotlin
Whisper_Sy1 天前
Flutter for OpenHarmony移动数据使用监管助手App实战 - 网络状态实现
android·java·开发语言·javascript·网络·flutter·php
ujainu1 天前
Flutter + OpenHarmony 网格布局:GridView 与 SliverGrid 在鸿蒙设备内容展示中的应用
android·flutter·组件
龙之叶1 天前
【Android Monkey源码解析五】- 异常处理
android·数据库