Ich habe 100 Bilder auf externen Speicher, die ich diese beiden folgenden Aufgaben in einer for-Schleife.Verbesserung der Datei speichern Leistung in Android
- jedes Element als Bitmap Laden und mit einer anderen Bitmap
- Saving Ergebnis in als neue Datei im Speicher
Und für 100 Bilder dauert es zu viel Zeit zu verschmelzen. Das Zusammenführen von Bitmaps ist schnell beendet und OK, aber das Speichern des Ergebnisses in der Datei dauert zu viel Zeit. Gibt es trotzdem etwas, um dieses Problem zu fördern? Wenn Sie die Bitmaps im Speicher behalten und Stapel speichern, kann dies zu OutOfMemoryException führen. Diese
ist, wie ich Bitmaps fusionieren: how to merge to two bitmap one over another
Dies ist, wie ich die Bitmap-Datei zu speichern:
File imageFileFolder = new File(Statics.TEMP_PATH);
imageFileFolder.mkdirs();
FileOutputStream out = null;
File imageFileName = new File(imageFileFolder, imageName);
try {
out = new FileOutputStream(imageFileName);
imageBitmap.compress(Bitmap.CompressFormat.PNG, 100, out);
out.flush();
out.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
Beachten Sie, dass alle diese sind in einem AsyncTask Block.
Sie könnten versuchen, ob ein Puffer hinzufügen, d. H. Out = neue BufferedOutputStream (neue FileOutputStream (imageFileName), 8 * 1024); '(versuchen Sie größere Größe) hat messbare Wirkung. – zapl
Was ist zu viel Zeit? Bitte sagen Sie wie viele Sekunden. Erzählen Sie auch Dateigrößen. Verwenden Sie die Kerne der CPU und verwenden Sie Threads. Ein Thread für jeden Kern. Oder zwei. – greenapps
@ greenapps Speichern von Datei ist eine teure Aufgabe. Wenn Sie irgendeine Lösung haben, sagen Sie mir bitte, und ich werde Ihnen den Unterschied sagen. Weil der Datensatz nicht sehr wichtig ist. – Aerox