1. Nimm jetzt an unserem 2. ADVENT-Gewinnspiel teil - Alle Informationen findest Du hier!

Zugriff auf SD Karte zu langsam

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von ben56a, 30.12.2011.

  1. ben56a, 30.12.2011 #1
    ben56a

    ben56a Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    91
    Erhaltene Danke:
    0
    Registriert seit:
    15.08.2010
    Hallo,

    nachdem die App gestartet wurde, werden im Hintergrund aus dem Internet Bilder heruntergeladen, welche ich auf die SD Karte packe um nicht immer eine Internetverbindung zu benötigen.

    Wenn ich aber nun auf die Bilder zugreife und diese in eine ImageView packe, dann dauert es zu lange, bis diese geladen sind. Gibt es eine bessere Möglichkeit?

    Hier werden die Bilder auf die SD Karte gespeichert
    Code:
    extStorageDirectory = Environment.getExternalStorageDirectory().toString();
    					
    					 OutputStream outStream = null;
    					 File file = new File(extStorageDirectory, "1.PNG");
    					 
    					 try {
    					    outStream = new FileOutputStream(file);
    					    bm.compress(Bitmap.CompressFormat.PNG, 100, outStream);
    					    outStream.flush();
    					    outStream.close();
    					   }catch (Exception e) {
    						// TODO: handle exception
    					}
    					

    Hier werden Sie von der SD Karte geladen
    Code:
    
    String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
    		
    		 try {
    	          File f = new File(extStorageDirectory, "1.PNG");
    	          if (!f.exists()) { return null; }
    	          Bitmap bm = BitmapFactory.decodeFile(extStorageDirectory+"/1.PNG");
    	          img.setImageBitmap(bm);
    	          
    	          
    	      } catch (Exception et) {
    	         
    	      }	
    
    Vielen Dank
     
  2. strider, 30.12.2011 #2
    strider

    strider Erfahrener Benutzer

    Beiträge:
    208
    Erhaltene Danke:
    45
    Registriert seit:
    30.09.2011
    Phone:
    Nexus S
    Das einlesen sieht richtig aus, was Du noch probieren könntest ist das Bild über einen BufferdInputStream einzulesen.
    Bitmap bitmap = BitmapFactory.decodeStream(new BufferedInputStream(...))
    Ansonsten könntes du auch überprüfen ob es an der Bilddatei liegt. Versuch es mit einem anderen Bild testweise. Oder die SD Karte ist schlicht und einfach Schrott.
     
  3. ben56a, 31.12.2011 #3
    ben56a

    ben56a Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    91
    Erhaltene Danke:
    0
    Registriert seit:
    15.08.2010
    Ich habe es jetzt folgendermaßen versucht:

    Code:
     Uri ur = Uri.parse(extStorageDirectory+"/"+e.getId()+".PNG");
    	          img.setImageURI(ur);
    Ich greife auf das Bild zu und erzeuge es nicht neu! Allerdings ist es nur minimal schneller! Das ganze ist in einer schleife und wird 5mal durchgeführt, kann dies zu problemen führen?
     
  4. the_alien, 02.01.2012 #4
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Wie groß sind die Bilder? Wie viele davon? Wie schnell ist die SD Karte?
    Was heißt für dich es "dauert zu lange"?
     
  5. ben56a, 02.01.2012 #5
    ben56a

    ben56a Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    91
    Erhaltene Danke:
    0
    Registriert seit:
    15.08.2010
    Die Bildgröße variiert, allerdings würde ich so zwischen 50 und 500 KB schätzen. Es soll zu jedem ListView Eintrag ein Bild geladen werden. Da die ListView Größe nicht konstant ist, sondern von der Eingabe des Users abhängt, kann auch dies unterschiedlich sein. Zu Testzwecken habe ich momentan 5 Bilder die ich von der SD Karte lade.
    "dauert zu lange" heißt für mich:
    Wenn man eine Auswahl trifft und dann dauert es ca 2-3 sekunden, bis die nächste Activity angezeigt wird. Einen Ladebalken mächte ich nicht einbauen, da dies unschön ist. Lieber will ich die Activity schneller laden!

    Die Geschwindigkeit der SD Karte weiß ich leider gerade nicht auswendig, kann ich aber nachliefern.

    Vielen Dank
     
  6. the_alien, 02.01.2012 #6
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Dann bau doch mal ein paar Log Statements ein um zu gucken was genau jetzt zu lange dauert.
     

Diese Seite empfehlen