使用片段与可绘制资源(jpg)时由于内存分配错误导致的Android应用崩溃

时间:2015-01-25 00:36:48

标签: android android-fragments

我刚刚开始进行Android编程。

所以我在网上播放了一个示例视频,显示了滑动视图。我学会了这些概念并在手机上测试了程序;工作正常。

该程序使用ViewPager和FragmentPagerAdapter在每个片段之间切换。

所以我扩展了片段代码(只显示了一个纯色的空白片段),以显示图像:

public class Frag1 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
{
    View        rootView = inflater.inflate(R.layout.frag1_layout, container, false);
    ImageView   imgView  = (ImageView) rootView.findViewById(R.id.imageView1);

    imgView.setImageResource(R.drawable.causeway1);
    return rootView;
    }
}

我收到消息"不幸的是mytestapp已停止"当我在手机上调试应用程序时。

我在PC上部署模拟器并没有成功,因此我必须使用手机(三星Galaxy note 3)。

来自logcat的错误表示java.lang.OutOfMemoryError,表示setImageResource行。图像大小为906kb。这太大了吗?

Android平台上有哪些内存限制 - 有什么方法可以要求更多,或者我应该尝试将我的图像重新采样到更小的尺寸?

1 个答案:

答案 0 :(得分:1)

我删除了使用其中一个较小的位置以906k创建位图的调用,并且我的应用程序正常工作。

我在logcat输出中发现了以下内容,我怀疑这可能是罪魁祸首:

Bitmap too large to be uploaded into a texture (5760x3240, max=4096x4096)