Stack Overflow

C

ceoozan

Neues Mitglied
0
Hi Alle,

Ich habe ein Problem. Ich möchte gerne in Activity ein
ViewFlipper, der aus vielen Bildern bestehen.
Beim Hinzufügen kriege ich aber ein OutOfMemoryException.

Der Codeschnitt sieht wie folgt aus:

Code:
 nFirst = 0x7f020000     // das erste Bild
 nLast = 0x7f020063     // das letzte Bild
  
 ViewFlipper flipper = (ViewFlipper) findViewById(R.id.ViewFlipper01);

 // ungefähr 100 Bilder, gesammt größe : 2,1 MB 
 for (i = nFirst; i < nLast; i++)
   {
      image = new ImageView(this);
      image.setImageResource(i);
      flipper.addView(image);
   }
Die Fehlermeldung :

Code:
06-26 09:46:20.541: WARN/dalvikvm(343): threadid=1: thread exiting with uncaught exception (group=0x40015560)
06-26 09:46:20.571: ERROR/AndroidRuntime(343): FATAL EXCEPTION: main
06-26 09:46:20.571: ERROR/AndroidRuntime(343): java.lang.OutOfMemoryError: bitmap size exceeds VM budget
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:460)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:336)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.graphics.drawable.Drawable.createFromResourceStream(Drawable.java:697)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.content.res.Resources.loadDrawable(Resources.java:1709)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.content.res.Resources.getDrawable(Resources.java:581)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.widget.ImageView.resolveUri(ImageView.java:501)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.widget.ImageView.setImageResource(ImageView.java:280)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at gui.cevsen.Cevsen.onClick(Cevsen.java:110)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.view.View.performClick(View.java:2485)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.view.View$PerformClick.run(View.java:9080)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.os.Handler.handleCallback(Handler.java:587)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.os.Handler.dispatchMessage(Handler.java:92)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.os.Looper.loop(Looper.java:123)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at android.app.ActivityThread.main(ActivityThread.java:3683)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at java.lang.reflect.Method.invokeNative(Native Method)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at java.lang.reflect.Method.invoke(Method.java:507)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
06-26 09:46:20.571: ERROR/AndroidRuntime(343):     at dalvik.system.NativeStart.main(Native Method)
06-26 09:46:20.601: WARN/ActivityManager(67):   Force finishing activity gui.cevsen/.Cevsen
06-26 09:46:21.161: WARN/ActivityManager(67): Activity pause timeout for HistoryRecord{40573e70 gui.cevsen/.Cevsen}
Die Frage ist, kann/darf ich nicht so viele Bilder hinzufügen?

Danke im voraus.
 
das würde sich ja ganz leicht rausfinden lassen, wenn du einfach mal nur die hälfte nimmst
 
Bei >10 Bildern würde ich ohnehin eher den ViewSwitcher nehmen. Da kannst Du die Bilder dann lazy und somit auch noch schneller laden.
 
Ich bekomme den Fehler immer dann, wenn die gesammt größe 2MB überschreitet. Ich muss aber alle Bilder verwenden. Was ist aber lazy?
 
er meint du sollst nicht alle bilder gleich reinladen.
einfach mal 3-5 bilder im speicher halten und beim weiterschalten einfach das letzte weglsöchen und vorne eines dazuladen.

so hast keine "gefühlten" ladezeiten und nur wenige bilder im speicher.
 
Danke, ich probiere es.
 

Ähnliche Themen

M
Antworten
8
Aufrufe
1.304
.mo
M
C
  • chillout
Antworten
0
Aufrufe
562
chillout
C
killphil75
  • killphil75
Antworten
3
Aufrufe
908
reneph
reneph
Zurück
Oben Unten