onTrimMemory
是 Android 中的一个回调方法,用于帮助应用在系统内存紧张时进行内存管理和优化。这个方法定义在 ComponentCallbacks2
接口中,几乎所有的应用组件(如 Activity
、Service
、Application
)都实现了这个接口,因此你可以在这些组件中重写该方法。
onTrimMemory
方法详解@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
// 根据 level 处理内存优化逻辑
}
level
:一个整数,表示系统内存的紧张程度。可以是以下值之一:在不同的内存级别下,应用可以采取不同的优化策略,以减少内存使用:
策略:释放所有不必要的内存,包括缓存、Bitmap、数据库连接等。
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if (level >= ComponentCallbacks2.TRIM_MEMORY_COMPLETE) {
clearCache();
releaseBitmaps();
closeDatabaseConnections();
}
}
private void clearCache() {
// 清理缓存
}
private void releaseBitmaps() {
// 释放 Bitmap 资源
}
private void closeDatabaseConnections() {
// 关闭数据库连接
}
策略:释放中等优先级的资源,如一些缓存数据、临时对象等。
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if (level >= ComponentCallbacks2.TRIM_MEMORY_MODERATE) {
clearSomeCache();
}
}
private void clearSomeCache() {
// 清理部分缓存数据
}
策略:释放与 UI 相关的资源,如不再显示的 View、Activity 等。
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if (level == ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN) {
releaseUIResources();
}
}
private void releaseUIResources() {
// 释放 UI 相关资源
}
策略:可以适当释放一些资源,但不必过于激进。
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
if (level == ComponentCallbacks2.TRIM_MEMORY_RUNNING_MODERATE) {
releaseModerateResources();
}
}
private void releaseModerateResources() {
// 释放中等程度的资源
}
Application
中实现 onTrimMemory
public class MyApp extends Application {
@Override
public void onTrimMemory(int level) {
super.onTrimMemory(level);
switch (level) {
case ComponentCallbacks2.TRIM_MEMORY_UI_HIDDEN:
// 释放与 UI 相关的资源
releaseUIResources();
break;
case ComponentCallbacks2.TRIM_MEMORY_RUNNING_LOW:
case ComponentCallbacks2.TRIM_MEMORY_RUNNING_CRITICAL:
// 释放一些缓存资源
clearCache();
break;
case ComponentCallbacks2.TRIM_MEMORY_COMPLETE:
// 释放所有不必要的资源
clearAllResources();
break;
default:
// 其他级别的处理
break;
}
}
private void releaseUIResources() {
// 释放与 UI 相关的资源
}
private void clearCache() {
// 清理缓存
}
private void clearAllResources() {
// 释放所有不必要的资源
}
}
通过合理使用 onTrimMemory
方法,可以有效减少应用的内存占用,提升系统的整体性能和稳定性。