如何使用Fragments解决Android Studio中的java.lang.OutOfMemoryError

时间:2017-03-18 20:47:35

标签: android image android-fragments memory

这是我第一次为移动设备编程。当我从一个片段切换到另一个片段时,我的应用程序崩溃了。在一次崩溃后的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;
}

1 个答案:

答案 0 :(得分:1)

我认为没有办法知道OutOfMemoryError何时被抛出,但重要的是要确保你没有向你的{加载非常大的图像{1}}。您可以做的最好的事情是在将图像加载到ImageViews之前缩小图像。这解决了OOM问题。您可以使用本指南中的代码缩小图像:Android developers