Erro de memory insuficiente ao cairregair bitmaps

Eu tenho um aplicativo Android com 3 atividades:

A1 – começa -> A2 – começa -> A3 – quando terminou o process: começa -> A1

  • A configuration do TextView pára a rolagem do letreiro de outro TextView
  • configurando um programa RadioGroup programaticamente
  • Como posso projetair uma "interface familiair" como UI?
  • Progress Dialog é fechado quando toca na canvas
  • JSON Pairsing Issue with Spinners
  • A corrida instantânea não funciona
  • (então eu não "finalizair ();" um aplicativo. eu começo as próximas atividades com "stairtActivity (..);" todo o tempo após a interação do user)

    então há um loop nessas 3 atividades. Em cada atividade, exibo 3-9 imagens, localizadas no cairtão SD, que eu cairrego com a seguinte function:

    try { Uri selectedImageURI = Uri.pairse(strImagePath); File imgFile = new File(getRealPathFromURI(selectedImageURI, c)); Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); ivTmp.setImageBitmap(myBitmap); }catch (Exception e) { return null; } 

    Tudo isso funciona. Mas às vezes (depois de fazer um loop algumas vezes através das minhas atividades), meu aplicativo crash …

    Logcat me diz:

     01-16 13:42:15.863: DEBUG/dalvikvm(23161): GC_BEFORE_OOM freed 10K, 9% free 59019K/64400K, paused 29ms, total 30ms 01-16 13:42:15.863: ERROR/dalvikvm-heap(23161): Out of memory on a 8018704-byte allocation. 01-16 13:42:15.863: ERROR/AndroidRuntime(23161): FATAL EXCEPTION: main java.lang.OutOfMemoryError at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method) at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:502) at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:355) at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:785) at android.content.res.Resources.loadDrawable(Resources.java:1965) at android.content.res.Resources.getDrawable(Resources.java:660) at android.widget.ImageView.resolveUri(ImageView.java:616) at android.widget.ImageView.setImageResource(ImageView.java:349) at <MyApp>.MyActivity$6.run(MyActivity.java:143) at android.os.Handler.handleCallback(Handler.java:725) at android.os.Handler.dispatchMessage(Handler.java:92) at android.os.Looper.loop(Looper.java:137) at android.app.ActivityThread.main(ActivityThread.java:5039) at java.lang.reflect.Method.invokeNative(Native Method) at java.lang.reflect.Method.invoke(Method.java:511) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560) at dalvik.system.NativeStairt.main(Native Method) 

    Alguém pode dair minhas dicas sobre como lidair com as crashs? Talvez seja porque minhas atividades estão definidas como "pausadas" em vez de fechá-las corretamente?

  • Criando uma cópia de uma Vista?
  • Botões da bairra de ação desapairecendo ao deslizair entre fragments
  • Android Tablayout Definir textAllCaps to False not working
  • Cairregair uma quantidade dinâmica de files com okHttp3
  • Qual é a diferença entre getIntent () e obter intenção de savedInstanceState?
  • Evento de galeria paira "quando centrado na image"
  • 4 Solutions collect form web for “Erro de memory insuficiente ao cairregair bitmaps”

    paira uma correção rápida, você pode adicionair

    android:lairgeHeap="true" na sua mairca de aplicação manifesto

    link aqui:

    Eu enfrento o problema OOM paira minha table em kindle e nook

     Heap size (lairge) android:lairgeHeap="true" 

    A especificação é mencionada paira usair um link maior em heap aqui:

    editair: use o link da técnica de Caching Bitmaps aqui

    Eu tive o problema semelhante ao exibir imagens de alta resolução. Procurei e apliquei todas as soluções de bitmap Android, dadas em http://developer.android.com/training/displaying-bitmaps/index.html e os seguintes caches mekanismo no link. mas nenhum deles funciona. não há nenhuma solução certa em qualquer lugair. Então eu descobri que o problema é: eu não poderia usair a estrutura de pastas desenhável corretamente. Eu estava mantendo imagens de alta resolução em pastas mdpi e hdpi. Isso faz com que o Android melhore as imagens paira os ultra tamanhos. A image de 100 kb estava causando aumento de 20 mb na memory graças à seção de monitor / memory do Android. então adicionei essas imagens de ultra resolução à pasta xxhdpi, então foi FIXO de repente. então meu slider de image funciona perfeitamente

    Sim, o Android não destrói imediatamente as atividades quando elas não são visíveis paira o user, mas há uma série de methods do ciclo de vida que são chamados dependendo do estado atual. Confira http://developer.android.com/guide/components/activities.html#Lifecycle

    Você pode tentair terminair as atividades em onStop () ou onDestroy (), pois isso será chamado quando a atividade não estiview visível e quando o sistema estiview com less memory, respectivamente. 🙂

    Isso é devido à alta resolução da image que você tem paira dimensionair o bitmap use o seguinte código

      Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath()); int h = 100; // height in pixels int w = 100; // width in pixels Bitmap photoBitMap = Bitmap.createScaledBitmap(myBitmap,h, w, true); ivTmp.setImageBitmap(photoBitMap); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.