iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Android中怎么利用OOM解决异常
  • 766
分享到

Android中怎么利用OOM解决异常

2023-06-20 19:06:45 766人浏览 泡泡鱼
摘要

本篇文章为大家展示了Android中怎么利用OOM解决异常,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。02-03 08:56:12.411: E/AndroidRuntime(

本篇文章为大家展示了Android中怎么利用OOM解决异常,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

02-03 08:56:12.411: E/AndroidRuntime(10137): FATAL EXCEPTioN: main02-03 08:56:12.411: E/AndroidRuntime(10137): java.lang.IllegalStateException: Could not execute method of the activity02-03 08:56:12.411: E/AndroidRuntime(10137): at android.view.View$1.onClick(View.java:3591)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.view.View.perfORMClick(View.java:4084)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.view.View$PerformClick.run(View.java:16966)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.os.Handler.handleCallback(Handler.java:615)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.os.Handler.dispatchMessage(Handler.java:92)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.os.Looper.loop(Looper.java:137)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.app.ActivityThread.main(ActivityThread.java:4745)02-03 08:56:12.411: E/AndroidRuntime(10137): at java.lang.reflect.Method.invokeNative(Native Method)02-03 08:56:12.411: E/AndroidRuntime(10137): at java.lang.reflect.Method.invoke(Method.java:511)02-03 08:56:12.411: E/AndroidRuntime(10137): at com.android.internal.os.ZyGoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)02-03 08:56:12.411: E/AndroidRuntime(10137): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)02-03 08:56:12.411: E/AndroidRuntime(10137): at dalvik.system.NativeStart.main(Native Method)02-03 08:56:12.411: E/AndroidRuntime(10137): Caused by: java.lang.reflect.InvocationTargetException02-03 08:56:12.411: E/AndroidRuntime(10137): at java.lang.reflect.Method.invokeNative(Native Method)02-03 08:56:12.411: E/AndroidRuntime(10137): at java.lang.reflect.Method.invoke(Method.java:511)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.view.View$1.onClick(View.java:3586)02-03 08:56:12.411: E/AndroidRuntime(10137): ... 11 more02-03 08:56:12.411: E/AndroidRuntime(10137): Caused by: java.lang.OutOfMemoryError02-03 08:56:12.411: E/AndroidRuntime(10137): at android.graphics.BitmapFactory.nativeDecodeStream(Native Method)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:527)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:301)02-03 08:56:12.411: E/AndroidRuntime(10137): at android.graphics.BitmapFactory.decodeFile(BitmapFactory.java:326)02-03 08:56:12.411: E/AndroidRuntime(10137): at com.ithema.bitmap.MainActivity.down(MainActivity.java:52)02-03 08:56:12.411: E/AndroidRuntime(10137): ... 14 more

堆内存空间主要是给类实例、数组分配空间。当图片占用的空间大于对内存空间时就会抛出内存溢出的异常。

本示例是在加载15M左右的图片而引起的OOM异常,默认情况下,虚拟机只语序允许加载10M以内大小的图片。如果超过10M,则会抛出OOM异常

问题解决思路:缩放加载图片

得到设备屏幕的分辨率:
2、得到原图的分辨率:
3、通过比较得到一个合适的比例值:
4、使用比例值缩放一张图片,并加载到内存中:

示例代码:

package com.ithema.bitmap; import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.BitmapFactory.Options;import android.graphics.Point;import android.os.Bundle;import android.os.Environment;import android.view.Display;import android.view.View;import android.view.WindowManager;import android.widget.ImageView; public class MainActivity extends Activity {     private ImageView iv;@Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        iv = (ImageView) findViewById(R.id.iv);    }    public void down(View view) {//1.获取手机屏幕分辨率的大小    WindowManager wm=(WindowManager) getSystemService(WINDOW_SERVICE);    Display display = wm.getDefaultDisplay();    int screenHeight = display.getHeight();    int screenWidth = display.getWidth();    //2.获取原图分辨率的大小    Options opts=new Options();    opts.inJustDecodeBounds=true;BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/1.bmp", opts);    int outHeight = opts.outHeight;    int outWidth = opts.outWidth;    //3.得到缩放比    int scale=1;    int scaleX=outWidth/screenWidth;    int scaleY=outHeight/screenHeight;    if(scaleX>scaleY&&scaleX>1){    scale=scaleX;    }    if(scaleY>scaleX&&scaleY>1){    scale=scaleY;    }        //4.使用比例值缩放一张图片,并加载到内存中:    opts.inJustDecodeBounds=false;    opts.inSampleSize=scale;    Bitmap bitmap = BitmapFactory.decodeFile(Environment.getExternalStorageDirectory()+"/1.bmp", opts);        iv.setImageBitmap(bitmap);}}

布局文件代码:

<LinearLayout xmlns:android="Http://schemas.android.com/apk/res/android"    xmlns:tools="http://schemas.android.com/tools"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"     ><Button     android:onClick="down"    android:text="加载大图片"    android:layout_width="fill_parent"        android:layout_height="wrap_content"    />    <ImageView        android:id="@+id/iv"        android:layout_width="fill_parent"        android:layout_height="fill_parent"        /> </LinearLayout>

上述内容就是Android中怎么利用OOM解决异常,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网精选频道。

--结束END--

本文标题: Android中怎么利用OOM解决异常

本文链接: https://www.lsjlt.com/news/299447.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android中怎么利用OOM解决异常
    本篇文章为大家展示了Android中怎么利用OOM解决异常,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。02-03 08:56:12.411: E/AndroidRuntime(...
    99+
    2023-06-20
  • Android之OOM异常解决案例讲解
    02-03 08:56:12.411: E/AndroidRuntime(10137): FATAL EXCEPTION: main 02-03 08:56:12.411: E/...
    99+
    2024-04-02
  • Java oom异常的原因怎么排查
    Java中的OOM(Out Of Memory)异常通常由以下几个原因引起: 内存泄漏:当对象被创建后,如果没有被及时释放,就会...
    99+
    2023-10-23
    Java
  • Android反序列化异常EOFException怎么解决
    在Android中,EOFException异常通常在反序列化过程中出现,表示已经到达文件的末尾。要解决这个问题,可以尝试以下几种方...
    99+
    2023-10-22
    Android
  • Java利用Optional解决空指针异常
    目录背景介绍案例基本用法解析转换与过滤案例优化源码解析总结背景介绍 Java 8 引入了一个十分实用的 Optional 类,它主要是为了解决空指针异常(NullPointerExc...
    99+
    2024-04-02
  • Java中RuntimeException异常怎么解决
    在Java中,RuntimeException是一种unchecked异常,它们在编译时不需要显式地处理。然而,为了提高程序的健壮性...
    99+
    2023-08-08
    Java
  • Android BadTokenException异常解决案例详解
    目录解决办法1解决方法2总结 线上出现了如上的 crash,第一解决反应是在 show dialog 之前做个 isFinish 和 isDestroyed 判断,当我翻开代码正要解...
    99+
    2024-04-02
  • 怎么在java中使用BigDecimal解决异常
    本篇文章为大家展示了怎么在java中使用BigDecimal解决异常,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Java的优点是什么1. 简单,只需理解基本的概念,就可以编写适合于各种情况的应用程...
    99+
    2023-06-14
  • DNS异常怎么解决
    DNS异常的解决操作步骤如下打开电脑的控制面板找到”网络和Internet”并点击,再打开“网络和共享中心”;点击更改适配器设置,右击找到属性按钮;点击“属性”按钮;将自动获得DNS服务器地址,手工修改服务器地址为14.114.114.11...
    99+
    2024-04-02
  • 怎么解决jedis异常
    这篇文章主要讲解了“怎么解决jedis异常”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么解决jedis异常”吧!1.jedis机器-->ping-...
    99+
    2024-04-02
  • Java常见异常怎么解决
    本篇内容介绍了“Java常见异常怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!java.lang.NullPointerExcept...
    99+
    2023-06-02
  • java.lang.ArrayStoreException异常怎么解决
    本篇内容主要讲解“java.lang.ArrayStoreException异常怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java.lang.ArrayStoreException异...
    99+
    2023-06-22
  • laravel中异常问题怎么解决
    这篇文章主要讲解了“laravel中异常问题怎么解决”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“laravel中异常问题怎么解决”吧!laravel中的异常有:1、“E_ERROR”致命运...
    99+
    2023-07-02
  • java中Pulsar InterruptedException异常怎么解决
    本篇内容主要讲解“java中Pulsar InterruptedException异常怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中Pulsar Inter...
    99+
    2023-07-05
  • 怎么java项目中利用遍历取值出现异常如何解决
    本篇文章为大家展示了怎么java项目中利用遍历取值出现异常如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。java 中遍历取值异常(Hashtable Enumerator)解决办法用迭代器取...
    99+
    2023-05-31
    java 遍历 ava
  • 怎么在python中利用traceback输出异常
    这篇文章给大家介绍怎么在python中利用traceback输出异常,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型...
    99+
    2023-06-14
  • 怎么在Python中利用Selenium处理异常
    这篇文章将为大家详细讲解有关怎么在Python中利用Selenium处理异常,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Python的优点有哪些1、简单易用,与C/C++、Java、C# ...
    99+
    2023-06-14
  • win101903异常CPU占用怎么解决
    这篇文章主要介绍了win101903异常CPU占用怎么解决的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇win101903异常CPU占用怎么解决文章都会有所收获,下面我们一起来看看吧。一、干净启动 对于系统 C...
    99+
    2023-07-01
  • java integer.parseint使用异常怎么解决
    在使用Integer.parseInt()方法时,如果字符串不能转换为整数,则会抛出NumberFormatException异常。...
    99+
    2024-02-29
    java
  • java connection使用异常怎么解决
    在Java中,使用java.sql.Connection对象连接数据库时可能会出现异常。以下是处理异常的一些常见方法:1. 检查数据...
    99+
    2023-10-23
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作