docs에보고 된 의도 한 크기의 의도 한도가 1MB라고 생각했습니다.TransactionTooLargeException 새로운 활동을 시작할 때
E/JavaBinder(368): !!! FAILED BINDER TRANSACTION !!!
Exception when starting activity android/com.android.internal.app.ChooserActivity
android.os.TransactionTooLargeException
at android.os.BinderProxy.transact(Native Method)
at android.app.ApplicationThreadProxy.scheduleLaunchActivity(ApplicationThreadNative.java:705)
at com.android.server.am.ActivityStack.realStartActivityLocked(ActivityStack.java:690)
at com.android.server.am.ActivityStack.startSpecificActivityLocked(ActivityStack.java:799)
at com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:1743)
at com.android.server.am.ActivityStack.resumeTopActivityLocked(ActivityStack.java:1381)
at com.android.server.am.ActivityStack.completePauseLocked(ActivityStack.java:1129)
at com.android.server.am.ActivityStack.activityPaused(ActivityStack.java:1027)
at com.android.server.am.ActivityManagerService.activityPaused(ActivityManagerService.java:4288)
at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:381)
at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:1611)
at android.os.Binder.execTransact(Binder.java:367)
at dalvik.system.NativeStart.run(Native Method)
나쁜 것은 startActivity를가 실패하지만, ActivityManager 무한 프로세스를 산란, 반복을 계속 다시 시작 : 어쨌든, 나는이 끔찍한 TransactionTooLargeException
쫓는 일일 잃었다. 이것은 this 블로그 게시물에서 확인할 수 있습니다. 작성자는 인 '제한'은 86389 자입니다. 코드 내 관련 부분은 매우 간단합니다 :
Intent myIntent = new Intent(activity, VacancySwipeActivity.class);
//myIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bundle ex = new Bundle();
ex.putSerializable(Constants.Extra.VACANCY, vacancies);
ex.putString("token", token);
ex.putString("cosa", cosa.getText().toString());
ex.putInt("dist", searchDistance.getProgress());
ex.putString("dove", dove.getText().toString());
if (ret.getSearchLocation() != null) {
ex.putParcelable("userLoc", ret.getSearchLocation());
}
ex.putInt("totRows", ret.getTotFound());
myIntent.putExtras(ex);
activity.startActivity(myIntent);
ArrayList에 공석이 스레드에로드 한 후 의도의 추가를 통해 새로운 활동에 전달되는 약 8 POJO, 매우 작습니다. 내가 약 90k로 늘리면 앱이 무한히 재부팅이 필요하다. 누구든지이 경험이 있니?
'putParcelableArrayList()'메소드가 있습니다. 나는 소스를 보지 않았지만 아마 일반적인'putSerializable()'을 사용하는 것보다 효율적이다. – paul