在活动之间来回导航时如何释放图像并避免 outOfMemory exc-n [android]
How do I release images and avoid outOfMemory exc-n when navigating back and forth between activities[android]
我有一个儿童故事应用程序 - 18 页,每个页面都是一个 activity,其中包含背景图片、短篇小说和 每个单词的声音 (textView)一个故事,一些动画。
我注意到,当我转到下一页时,内存被消耗了;
当我返回上一页(activity)时它也会被消耗!当应用程序达到大约 182MB 的使用量时我得到 outOfMemory 异常 - 这随时可能发生.
如果图片是背景,如何发布图片
每页中的 RelativeLayout ?
每次我导航到下一页时,上一页都会被销毁 -
它加载的图像不应该也从内存中释放吗?
public class Page8 extends Activity{
ImageView forward ;
ImageView backward ;
RelativeLayout main ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.page8);
forward = (ImageView)findViewById(R.id.to_page_9);
backward = (ImageView)findViewById(R.id.to_page_7);
forward.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_DOWN) return false;
Intent intent = new Intent(Page8.this, Page9.class);
startActivity(intent);
return true;
}
});
backward.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() != MotionEvent.ACTION_DOWN) return false;
Intent intent = new Intent(Page8.this, Page7.class);
startActivity(intent);
return true;
}
});
}
@Override
public void onStop(){
main = (RelativeLayout)findViewById(R.id.main) ;
main.releaseMemory()?;
}
}
我觉得你有高清图片,你应该优化图片并缩小它们。
我有一个儿童故事应用程序 - 18 页,每个页面都是一个 activity,其中包含背景图片、短篇小说和 每个单词的声音 (textView)一个故事,一些动画。
我注意到,当我转到下一页时,内存被消耗了;
当我返回上一页(activity)时它也会被消耗!当应用程序达到大约 182MB 的使用量时我得到 outOfMemory 异常 - 这随时可能发生.
如果图片是背景,如何发布图片 每页中的 RelativeLayout ?
每次我导航到下一页时,上一页都会被销毁 - 它加载的图像不应该也从内存中释放吗?
public class Page8 extends Activity{ ImageView forward ; ImageView backward ; RelativeLayout main ; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.page8); forward = (ImageView)findViewById(R.id.to_page_9); backward = (ImageView)findViewById(R.id.to_page_7); forward.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() != MotionEvent.ACTION_DOWN) return false; Intent intent = new Intent(Page8.this, Page9.class); startActivity(intent); return true; } }); backward.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() != MotionEvent.ACTION_DOWN) return false; Intent intent = new Intent(Page8.this, Page7.class); startActivity(intent); return true; } }); } @Override public void onStop(){ main = (RelativeLayout)findViewById(R.id.main) ; main.releaseMemory()?; } }
我觉得你有高清图片,你应该优化图片并缩小它们。