Ich versuche, ein 20MB Blob in Datei auf einem Android-Gerät zu schreiben. Dieser Code funktioniert für 4-5 MB oder so gut, stürzt aber bei größeren Dateien ab.Mit cordova WriteFile für einen 20MB Blob stürzt ab (Android)
tp = cordova.file.dataDirectory; // for Android $cordovaFile.writeFile(tp, "temp-file.gif", blob,true);
ist es eine Möglichkeit, größere Blobs zu handhaben? Vielen Dank. Ich habe bereits android:largeHeap="true"
im Manifest.
der logcat Fehler:
E/JavaBinder( 809): !!! FAILED BINDER TRANSACTION !!!
I/art ( 809): Background sticky concurrent mark sweep GC freed 62202(4MB) AllocSpace objects, 96(3MB) LOS objects, 20% free, 25MB/31MB, paused 20.488ms total 176.243ms
E/JavaBinder( 809): !!! FAILED BINDER TRANSACTION !!!
W/ActivityManager( 809): Exception thrown during pause
W/ActivityManager( 809): android.os.TransactionTooLargeException
W/ActivityManager( 809): at android.os.BinderProxy.transactNative(Native Method)
W/ActivityManager( 809): at android.os.BinderProxy.transact(Binder.java:496)
W/ActivityManager( 809): at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:711)
W/ActivityManager( 809): at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:829)
W/ActivityManager( 809): at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2749)
W/ActivityManager( 809): at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2606)
W/ActivityManager( 809): at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2544)
W/ActivityManager( 809): at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:11721)
W/ActivityManager( 809): at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:11618)
W/ActivityManager( 809): at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:12330)
W/ActivityManager( 809): at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:11819)
W/ActivityManager( 809): at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86)
Wo ist diese besondere blob kommen, und gibt es einen Grund, warum Sie benötigen die Datei-API zu verwenden, um es zu retten? (Wenn ich eine Datei herunterlade, verwende ich stattdessen die Dateiübertragung.) –
Yup - Ich würde gerne die Dateiübertragung verwenden. Die Daten sind ein Blob, der im Speicher erstellt wird und mehrere Dateien vom Server kombiniert (der Blob ist ein animiertes GIF). Ich habe versucht, das Blob in ein Blob zu konvertieren: url (URL.createObjectURL (blob);) aber fileTransfer mag es nicht. – user1361529
Gibt es einen Grund, warum der Server die Kombination nicht ausführen kann und Ihnen das Endergebnis senden kann (welches Sie mit FileTransfer verwenden könnten)? Oder ist diese App so etwas wie ein GIF-Ersteller, der das GIF lokal erstellen muss? –