Неустранимое исключение: 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)
В этом упражнении, где генерируется сбой, я передаю Намерение захватить изображение с Камеры или Галереи.
Код:
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);
}
Пожалуйста, предложите, как решить эту проблему. Спасибо
2 ответа
Уменьшите размер изображения, которое вы взяли с камеры, а затем отправьте в другое действие. Потому что, когда мы передаем значение, оно имеет некоторые ограничения для транзакции.
Буфер транзакций Binder имеет ограниченный фиксированный размер, в настоящее время 1 МБ, который используется всеми транзакциями, выполняемыми для процесса. Следовательно, это исключение может быть вызвано, когда выполняется много транзакций, даже если большинство отдельных транзакций имеют умеренный размер.
Подробнее TransactionTooLargeException
Во время удаленного вызова процедуры аргументы и возвращаемое значение вызова передаются как объекты Parcel, хранящиеся в буфере транзакций Binder. Если аргументы или возвращаемое значение слишком велики для размещения в буфере транзакций, вызов завершится неудачно и TransactionTooLargeException
будет брошен.
Ключом к исключению TransactionTooLargeException является сохранение относительно небольших транзакций. Постарайтесь минимизировать объем памяти, необходимый для создания Parcel для аргументов и возвращаемого значения удаленного вызова процедуры. Избегайте передачи огромных массивов строк или больших растровых изображений. Если возможно, попробуйте разбить большие запросы на более мелкие части.
Создайте открытый класс и передайте ему растровое изображение, затем во втором упражнении получите значение растрового изображения из этого открытого класса.
общественный класс:
import android.graphics.Bitmap;
public class BittmapTransfer {
public static Bitmap bitmap = null;
}