다른 앱과 사진을 공유 할 때 앱이 android.os.TransactionTooLargeException을 수신하는 경우가 있습니다. 코드는 그림 자체를 전달하는 것이 아니라 URI를 전달합니다. 첫 번째 충돌 후 문제없이 동일한 프로세스를 여러 번 반복 할 수 있습니다. android.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