这是我第一次为移动设备编程。当我从一个片段切换到另一个片段时,我的应用程序崩溃了。在一次崩溃后的logcat中,它向我展示了一系列其他东西中的“java.lang.OutOfMemoryError”。我想这是因为我的第一个片段有一张照片,第二个片段也有。是否有一种简单的方法可以确保片段在加载另一个片段后内存不足?我看了很多,但没有找到任何直截了当的答案。
以下是切换片段的代码......
public boolean onNavigationItemSelected(MenuItem item) {
// Handle navigation view item clicks here.
int id = item.getItemId();
Fragment fragment;
if (id == R.id.nav_home) {
fragment = new LandingPageFragment();
} else if (id == R.id.nav_documents) {
fragment = new DocumentsPageFragment();
}
else if (id == R.id.nav_messages) {
fragment = new MessagesFragment();
}
else if (id == R.id.nav_admin) {
fragment = new AdministrationFragment();
}
else{
fragment = new LandingPageFragment();
}
FragmentManager fragmentManager = getSupportFragmentManager();
fragmentManager.beginTransaction().replace(R.id.flContent,fragment).commit();
this.prevFragment = fragment;
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout_new);
drawer.closeDrawer(GravityCompat.START);
return true;
}
答案 0 :(得分:1)
我认为没有办法知道OutOfMemoryError
何时被抛出,但重要的是要确保你没有向你的{加载非常大的图像{1}}。您可以做的最好的事情是在将图像加载到ImageViews
之前缩小图像。这解决了OOM问题。您可以使用本指南中的代码缩小图像:Android developers