android报错之.OutOfMemoryError

来源:互联网 发布:java排队叫号 编辑:程序博客网 时间:2024/06/01 08:01

发生环境:


联网上传图片的时候发生的错误

使用的联网工具 okgo

java.lang.OutOfMemoryError: Failed to allocate a 16637080 byte allocation with 8788384 free bytes and 8MB until OOM

解决方法:

<application    android:name=".MyApp"    android:allowBackup="true"    android:hardwareAccelerated="false"    android:icon="@mipmap/aiyunbei"    android:label="@string/app_name"    android:largeHeap="true"    //加上    android:supportsRtl="true"  //加上    android:theme="@style/Theme.AppCompat.Light.NoActionBar">


 oom就是内存溢出,在上传大图片到服务器时,没有压缩的情况下,会超出安卓对内存的显示,一般是512M最大,192M最小

我的默认只有8M,很明显是小了。加上 android:largeHeap="true"  就可以使用。

当然,这样做的话,如果你上传的数据实在是太大,即便添加到上面那句话也是会报错怎么办?

只能从上传时的联网框架入手了,一般联网延时十秒八秒都可以了,但是如果上传的数据比较大的时候,请改成30秒!

基本没人愿意等30秒的,所以为了防止自己出错,就需要牺牲掉用户的感受。毕竟,谁让你上传辣么大的文件了?

对了,第二句本来跟这个报错无关,但是既然写了还是认识下:

 转载:http://blog.csdn.net/aa464971/article/details/51372204

声明你的application是否愿意支持从右到左(原来RTL就是right-to-left 的缩写...)的布局。

如果设置为true,targetSdkVersion设置为17或更高,各种RTL的API将被激活,系统使用您的应用程序可以显示RTL布局。如果targetSdkVersion设置为16或更低的设置为false,RTL的API将被忽略或没有影响您的应用程序将具有相同的行为无论对用户现场的选择相关的布局方向(你的布局会从左至右)。
此属性的默认值是false。
此属性被添加到API 17。

最后一句也说了,这个api是17(也就是Android4.2)以后才有的,并且这个属性默认是false,17以前的api不支持这个属性。

那这个支持从右到左的布局到底是个什么鬼呢。

经常玩机的朋友应该有发现,在设置-开发人员选项,有一个强制使用从右到左的布局方向,如图



既然有这么个东西,那就打开看看



打开之后变成这样了,原先在左边的文字被放到右边去了,在右边的开关,也被放到左边了,看到这个就明白了这个属性的意思了吧


所以,有需要耍一耍的就加上,没有的就删掉吧




原创粉丝点击