如何从以前布局的图片中清除内存?转到不同的 layout/activity 时如何清理内存?
How to clear memory from pictures of previous layouts? How to clean memory when go to different layout/activity?
我的应用由 4 个布局文件组成,每个布局使用不同的图像作为背景。我设法加载布局 1 和 2,但在我转到布局 3 后出现错误 "Caused by: java.lang.OutOfMemoryError"
我怀疑是因为layout 1和layout 2还在内存中。有没有办法在我每次进入新布局时清理内存,这样我就不会 运行 内存不足?谢谢
P.S 我使用 Android Studio。
P.S 2 我不确定这是否会改变任何东西,但以防万一我是如何去不同的 activities/layouts:
previouspage.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), secondPage.class);
startActivity(intent);
}
}
);
nextpage.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), FourthPage.class);
startActivity(intent);
}
}
);
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), secondPage.class);
startActivity(intent);
yourExistingActivity.finish(); // This will free the memory
}
请注意,您从中调用 finish() 方法的 activity 已被销毁并且 ALL 其资源 queued 用于垃圾收集,并且此 activity 使用的所有内存将在 下一个 GC 周期 .
期间释放
如果你真的想尽快撤销内存,重写你的activity的onDestroy方法:
@Override
public void onDestroy() {
super.onDestroy();
Runtime.getRuntime().gc();
}
我的应用由 4 个布局文件组成,每个布局使用不同的图像作为背景。我设法加载布局 1 和 2,但在我转到布局 3 后出现错误 "Caused by: java.lang.OutOfMemoryError"
我怀疑是因为layout 1和layout 2还在内存中。有没有办法在我每次进入新布局时清理内存,这样我就不会 运行 内存不足?谢谢
P.S 我使用 Android Studio。
P.S 2 我不确定这是否会改变任何东西,但以防万一我是如何去不同的 activities/layouts:
previouspage.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), secondPage.class);
startActivity(intent);
}
}
);
nextpage.setOnClickListener(
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), FourthPage.class);
startActivity(intent);
}
}
);
new Button.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(v.getContext(), secondPage.class);
startActivity(intent);
yourExistingActivity.finish(); // This will free the memory
}
请注意,您从中调用 finish() 方法的 activity 已被销毁并且 ALL 其资源 queued 用于垃圾收集,并且此 activity 使用的所有内存将在 下一个 GC 周期 .
期间释放如果你真的想尽快撤销内存,重写你的activity的onDestroy方法:
@Override
public void onDestroy() {
super.onDestroy();
Runtime.getRuntime().gc();
}