0
他のアプリと画像を共有するときに、アプリがandroid.os.TransactionTooLargeExceptionを受け取ることがあります。コードは画像そのものではなく、URIを渡しています。 最初のクラッシュの後、問題なく何度でも同じプロセスを繰り返すことができます。 エラーのアンドロイド.os.TransactionTooLargeExceptionも、問題の正確な場所を特定するために特定されていません。他のアプリと画像を共有するときにandroid.os.TransactionTooLargeExceptionが発生する
さらにこのエラーをデバッグする方法はありますか? 解決方法
ご協力いただきありがとうございます。
private void sharePicture() {
BitmapDrawable draw = (BitmapDrawable) mIvPicture.getDrawable();
Bitmap bitmap = draw.getBitmap();
FileOutputStream outStream = null;
File sdCard = Environment.getExternalStorageDirectory();
File dir = new File(sdCard.getAbsolutePath() + "/DogWalkTracker");
dir.mkdirs();
String fileName = String.format("%d.jpg", System.currentTimeMillis());
File outFile = new File(dir, fileName);
try {
outStream = new FileOutputStream(outFile);
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
} catch (Exception ex) {
Toast.makeText(mContext, R.string.msgErrorPicture3, Toast.LENGTH_LONG).show();
return;
}
Intent intent = new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE);
intent.setData(Uri.fromFile(outFile));
getActivity().sendBroadcast(intent);
Intent shareIntent = new Intent();
shareIntent.setAction(Intent.ACTION_SEND);
shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(outFile));
shareIntent.setType("image/jpeg");
startActivity(Intent.createChooser(shareIntent, getResources().getText(R.string.msgSelectApp)));
}
12-29 12:59:21.779 15450-15450/br.com.cfb.dogwalktrackeruser E/JavaBinder: !!! FAILED BINDER TRANSACTION !!! (parcel size = 667052)
12-29 12:59:21.781 15450-15450/br.com.cfb.dogwalktrackeruser D/AndroidRuntime: Shutting down VM
12-29 12:59:21.786 15450-15450/br.com.cfb.dogwalktrackeruser E/AndroidRuntime: FATAL EXCEPTION: main
Process: br.com.cfb.dogwalktrackeruser, PID: 15450
java.lang.RuntimeException: android.os.TransactionTooLargeException: data parcel size 667052 bytes
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3776)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
Caused by: android.os.TransactionTooLargeException: data parcel size 667052 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:615)
at android.app.ActivityManagerProxy.activityStopped(ActivityManagerNative.java:3700)
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3768)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6123)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)
スタックトレースからは、保存されたインスタンス状態「Bundle」が大きすぎるように感じられます。 – CommonsWare
こんにちはCommonsWare。私は、アプリケーションをテストし、エラーがonSaveInstanceStateの後に発生することを確認したので、私はその断片を見て、断片や画像に他のデータを渡していたことに気付きました。フラグメントデータ。ありがとうございました。 – Carlos