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

相关推荐
wWYy.2 小时前
Mysql:一行数据是怎么存储的?
android·数据库·mysql
漏刻有时9 小时前
PHP GeoJSON转PNG地图渲染程序开发笔记、源码解读、问题复盘与整改方案
android·笔记·php
-SOLO-10 小时前
解决VMware 显示比例被重置的问题
android
alexhilton11 小时前
探究Android Views、Flutter和Compose如何渲染你的UI
android·kotlin·android jetpack
Lesile13 小时前
Android:Hilt框架入门 · 在ViewUI和ComposeUI下的应用
android·android jetpack
用户4238162290714 小时前
Android 16 WebView 页面顶部挖孔/通知栏不能显示UI问题排查
android
weixin_7275356214 小时前
Loop 已死,Graph 新生:AI 工作流的范式革命
android·人工智能·rxjava
严同学正在努力15 小时前
从备份到恢复:我用 30 分钟恢复了误删的核心业务表
android·java·数据库·ai
梦想三三16 小时前
LangChain Output Parser 实战:从字符串到结构化数据的完整指南
android·服务器·langchain·github·uv
爱笑鱼18 小时前
Binder(八):远端进程死了,BinderProxy 为什么还能收到通知?
android