我正試圖在Android設備上寫入20MB blob文件。此代碼工作正常4-5MB左右,但崩潰的大文件。使用cordova writefile 20MB blob崩潰(Android)
tp = cordova.file.dataDirectory; // for Android $cordovaFile.writeFile(tp, "temp-file.gif", blob,true);
有沒有辦法來處理更大的斑點?謝謝。清單中已有android:largeHeap="true"
。
的logcat的錯誤:
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)
哪裏是這個特殊的blob來自何方,有沒有爲什麼你需要使用文件API來保存它的理由? (如果我正在下載文件,我會使用文件傳輸。) –
是的 - 我很樂意使用文件傳輸。數據是在內存中創建的一個blob,它將來自服務器的多個文件組合在一起(blob是一個動畫gif)。我試圖將blob轉換爲blob:url(URL.createObjectURL(blob);)但fileTransfer不喜歡它。 – user1361529
服務器無法執行組合並向您發送最終結果(您可以使用FileTransfer)的任何原因?或者,這個應用程序就像GIF創建者,需要在本地構建GIF? –