有没有办法强制清除应用程序中的所有已用资源?我想在onDestroy函数中清理缓存,但我真的不知道它是否足够。
关闭应用程序后,我遇到麻烦,因为我在应用程序中打开了很多图像,声音等等。如果我第二次快速打开应用程序,有很多次它无法打开某些资源,因为它仍然打开...
有任何提示吗?感谢
答案 0 :(得分:1)
位图:
BitmapFactory
加载它们,它们会被缓存在内存中,不应该阻止您再次打开它。但是,请在您创建的recycle()
个对象上调用Bitmap
。声音&视频:
MediaPlayer
打开它们,请在完成后致电stop()
release()
和MediaPlayer
。这些只是我的(有限的)意见,在继续之前也会查看其他一些答案。
答案 1 :(得分:0)
一旦活动/应用程序完成,我遇到了释放内存的完全相同的问题。所以我用一种清理方法!
在每个活动的onDestroy中,调用方法清理。
protected void onDestroy(){
cleanUp(findViewById(android.R.id.content));
}
public void Cleanup(View rootView) {
unbindDrawables(rootView);
System.gc();
}
private void unbindDrawables(View view) {
if (view.getBackground() != null)
view.getBackground().setCallback(null);
if (view instanceof ImageView) {
ImageView imageView = (ImageView) view;
imageView.setImageBitmap(null);
} else if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
for (int i = 0; i < viewGroup.getChildCount(); i++)
unbindDrawables(viewGroup.getChildAt(i));
if (!(view instanceof AdapterView))
viewGroup.removeAllViews();
}
}