android释放内存的一个办法
step 1:定义一个监听接口
public static interface OnLowMemoryListener { void onLowMemoryReceived(); } /* 何问起 hovertree.com */
step 2:android application文件中添加如下代码
//初始化
private ArrayList<WeakReference<OnLowMemoryListener>> mLowMemoryListeners; /* 何问起 hovertree.com */
public MyApp() { mLowMemoryListeners = new ArrayList<WeakReference<OnLowMemoryListener>>(); } /* 何问起 hovertree.com */
//注册监听
public void registerOnLowMemoryListener(OnLowMemoryListener listener) { if (listener != null) { mLowMemoryListeners .add(new WeakReference<MyApp.OnLowMemoryListener>(listener)); } } //移除监听 public void unregisterOnLowMemoryListener(OnLowMemoryListener listener) { if (listener != null) { int i = 0; while (i < mLowMemoryListeners.size()) { final OnLowMemoryListener l = mLowMemoryListeners.get(i).get(); if (l == null || l == listener) { mLowMemoryListeners.remove(i); } else { i++; } } } } /* 何问起 hovertree.com */
//内存空间过低的时候,被系统调用
@Override public void onLowMemory() { super.onLowMemory(); int i = 0; while (i < mLowMemoryListeners.size()) { final OnLowMemoryListener l = mLowMemoryListeners.get(i).get(); if (l == null) { mLowMemoryListeners.remove(i); } else { l.onLowMemoryReceived(); i++; } } } /* 何问起 hovertree.com */
step 3:那些浪费内存的地方,比如图片缓存,可以实现并注册这个监听
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探秘 MySQL 索引底层原理,解锁数据库优化的关键密码(下)
· 大模型 Token 究竟是啥:图解大模型Token
· 35岁程序员的中年求职记:四次碰壁后的深度反思
· 继承的思维:从思维模式到架构设计的深度解析
· 如何在 .NET 中 使用 ANTLR4
· 2025,回顾出走的 10 年
· 【保姆级教程】windows 安装 docker 全流程
· 分享 3 款基于 .NET 开源且免费的远程桌面工具
· 基于Docker+DeepSeek+Dify :搭建企业级本地私有化知识库超详细教程
· 由 MCP 官方推出的 C# SDK,使 .NET 应用程序、服务和库能够快速实现与 MCP 客户端