【发布时间】:2018-01-04 10:43:22
【问题描述】:
我在 Kids ABCD 应用程序中面临太多崩溃,这也是由于 OUT OF MEMORY ERROR 引起的 Inflate Exceptions。
应用程序在前台运行时占用了太多空间,导致它崩溃。
只有当我们在不同的活动之间切换得如此之快以至于堆区域被如此快速地填满并且应用程序开始给出膨胀异常并最终在活动销毁释放的空间之前崩溃时才会出现此问题。 (Activity 之间的快速切换是为了检查应用程序的性能)。
主要原因可能是大图像或应用程序在缓存后台存储中占用了更多空间。
大尺寸图片不可能是问题,因为我们已经验证所有图片都应该是中等尺寸。我们对代码所做的另一件事是,我们通过调用finish()method 完成了每个意图的每个活动。这里使用finish() 方法,以便活动可以从当前空间释放所有位图(关闭活动)。
super.onCreate(savedInstanceState);
setContentView(R.layout.ringa_ringa);
pause = (ImageView) findViewById(R.id.pause);
txt = (TextView) findViewById(R.id.txt);
pause.setVisibility(View.VISIBLE);
txt.setTextColor(Color.parseColor("#ffffff"));
list = new ArrayList<>();
mediaStorageDir = new File(Environment.getExternalStorageDirectory(), "Kids_Rhymes");
ringa_thread_running = false;
pause.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (counter == 0) {
mediaPlayer.stop();
ringa_thread_running = false;
position = 0;
if (lyrics_ring.isAlive()) {
lyrics_ring.interrupt();
}
pause.setImageResource(R.drawable.play);
counter = 1;
} else if (counter == 1) {
pause.setImageResource(R.drawable.pause);
counter = 0;
onResume();
}
}
});
String[] words = getResources().getString(R.string.ringa).split("\\$");
for (String w : words) {
System.out.println("=======String====" + w);
list.add(w);
}
试图为此找到准确的解决方案,但没有找到合适的解决方案。
【问题讨论】:
-
在此处发布您的代码
-
嗨,Anil,我已经输入了代码,请检查。