Фатальное исключение: java.lang.RuntimeException: сбой системы

Я часто получаю это исключение в отчете о сбоях, не знаю почему?

 Fatal Exception: java.lang.RuntimeException: Failure from system
   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1547)
   at android.app.Activity.startActivityForResult(Activity.java:4283)
   at android.app.Activity.startActivityForResult(Activity.java:4230)
   at android.support.v4.app.FragmentActivity.startActivityForResult(Unknown Source)
   at android.app.Activity.startActivity(Activity.java:4567)
   at android.app.Activity.startActivity(Activity.java:4535)
   at com.app.Register.MainActivity.onClick(Unknown Source)
   at android.view.View.performClick(View.java:5702)
   at android.widget.TextView.performClick(TextView.java:10887)
   at android.view.View$PerformClick.run(View.java:22533)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:158)
   at android.app.ActivityThread.main(ActivityThread.java:7224)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by android.os.TransactionTooLargeException: data parcel size 8177736 bytes
   at android.os.BinderProxy.transactNative(Binder.java)
   at android.os.BinderProxy.transact(Binder.java:503)
   at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:3130)
   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1540)
   at android.app.Activity.startActivityForResult(Activity.java:4283)
   at android.app.Activity.startActivityForResult(Activity.java:4230)
   at android.support.v4.app.FragmentActivity.startActivityForResult(Unknown Source)
   at android.app.Activity.startActivity(Activity.java:4567)
   at android.app.Activity.startActivity(Activity.java:4535)
   at ca.dailydelivery.driver.Register.AdditionalInfoActivity.onClick(Unknown Source)
   at android.view.View.performClick(View.java:5702)
   at android.widget.TextView.performClick(TextView.java:10887)
   at android.view.View$PerformClick.run(View.java:22533)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:158)
   at android.app.ActivityThread.main(ActivityThread.java:7224)
   at java.lang.reflect.Method.invoke(Method.java)
   at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
   at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

То, что я делаю в этом действии, когда возникает сбой, - это передача Intent для захвата изображения с камеры или галереи.

Код :

 private void captureImage() {
    Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
    // start the image capture Intent
    startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE);
}

private void openGallery() {
    Intent photoPickerIntent = new Intent(Intent.ACTION_PICK);
    photoPickerIntent.setType("image/*");
    startActivityForResult(photoPickerIntent, IMAGE_PICK_GALLERY);
}

Пожалуйста, предложите, как решить эту проблему. Спасибо


person Kapil Rajput    schedule 24.01.2017    source источник
comment
что ты хочешь делать ?   -  person A.s.ALI    schedule 24.01.2017
comment
@ShaartiKAKA, почему возникает проблема и как ее решить   -  person Kapil Rajput    schedule 24.01.2017
comment
тест с большими изображениями :)   -  person sushildlh    schedule 24.01.2017
comment
Какая версия ОС телефона? Если это нуга, это может помочь - [stackoverflow .com/questions/39098590/   -  person Paresh P.    schedule 24.01.2017
comment
того, чего вы хотите достичь, предоставленного вами кода недостаточно, чтобы получить то, что вы делаете ////   -  person A.s.ALI    schedule 24.01.2017
comment
В Android 6.0 Marshmallow произойдет сбой @Wizard   -  person Kapil Rajput    schedule 24.01.2017
comment
ur fileUri имеет значение null, попробуйте добавить внутрь блока if и посмотрите.   -  person W4R10CK    schedule 24.01.2017
comment
@ShaartiKAKA, какой еще фрагмент кода вы хотите, дайте мне знать   -  person Kapil Rajput    schedule 24.01.2017


Ответы (3)


Уменьшите размер изображения, которое вы сняли с камеры, а затем отправьте другому действию. Потому что, когда мы передаем значение, у него есть некоторые ограничения для транзакции.

Буфер транзакций Binder имеет ограниченный фиксированный размер, в настоящее время 1 МБ, который используется всеми транзакциями, выполняемыми для процесса. Следовательно, это исключение может быть вызвано, когда выполняется много транзакций, даже если большинство отдельных транзакций имеют умеренный размер.

Подробнее TransactionTooLargeException

person sasikumar    schedule 24.01.2017

Во время удаленного вызова процедуры аргументы и возвращаемое значение вызова передаются как Объекты Parcel, хранящиеся в буфере транзакций Binder. Если аргументы или возвращаемое значение слишком велики, чтобы поместиться в буфер транзакции, то вызов завершится ошибкой и будет выброшено TransactionTooLargeException.

Чтобы избежать TransactionTooLargeException, нужно сделать все транзакции относительно небольшими. Постарайтесь свести к минимуму объем памяти, необходимый для создания Parcel для аргументы и возвращаемое значение удаленного вызова процедуры. Избегайте передачи огромных массивов строк или больших растровых изображений. Если возможно, попробуйте разбить большие запросы на более мелкие части.

Справочник

person Paresh P.    schedule 24.01.2017

Создайте общедоступный класс и передайте ему растровое изображение, а затем во втором действии получите значение растрового изображения из этого общедоступного класса.

import android.graphics.Bitmap;

public class BitmapTransfer {
    public static Bitmap bitmap = null;
}
person Hossein Yousefpour    schedule 30.12.2018