Ошибка переполнения стека и слишком большая ошибка транзакции на Parcelable / Bundle
Я первый раз программист Android, и я только что столкнулся с ошибкой ниже.
Я не могу найти трассировку стека обратно в строку кода в моем приложении, и я не понимаю, почему происходит эта ошибка.
Я ничего не делю в приложении. Самым близким, что я пришел к разделению, было преобразование объекта в пакет и передачу его другому действию (у объекта тоже было несколько методов, и поэтому я не делал его пригодным для посылки).
Код для этого просто извлекает различные поля в объекте и помещает его в Bundle с ключами, а с другой стороны я перестраиваю объект.
Другой причиной, вызывающей изменение, может быть тот факт, что я устанавливаю этот объект в элемент View с помощью setTag().
Но у меня нет возможности узнать, если не выполнить рефакторинг кода и не найти другие методы для передачи данных, что является моим последним вариантом. Я думал, что спрошу здесь, прежде чем я начну возиться с рабочим кодом.
03-02 08:37:53.268 24274-24274/com.designs.zoomonkey.writetrack D/AndroidRuntime﹕ Shutting down VM
03-02 08:37:54.391 24274-24292/com.designs.zoomonkey.writetrack I/art﹕ Background sticky concurrent mark sweep GC freed 90272(7MB) AllocSpace objects, 13(3MB) LOS objects, 0% free, 81MB/81MB, paused 1.009ms total 790.192ms
03-02 08:37:54.506 24274-24292/com.designs.zoomonkey.writetrack I/art﹕ Background partial concurrent mark sweep GC freed 63652(5MB) AllocSpace objects, 3(5MB) LOS objects, 16% free, 82MB/98MB, paused 1.266ms total 100.287ms
03-02 08:37:54.995 24274-24292/com.designs.zoomonkey.writetrack I/art﹕ Background partial concurrent mark sweep GC freed 45837(3MB) AllocSpace objects, 3(20MB) LOS objects, 15% free, 85MB/101MB, paused 792us total 116.454ms
03-02 08:37:55.192 24274-24274/com.designs.zoomonkey.writetrack E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.designs.zoomonkey.writetrack, PID: 24274
java.lang.StackruError: stack size 8MB
at android.os.Parcel.writeArrayMapInternal(Parcel.java:628)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.o
03-02 08:37:55.295 24274-24292/com.designs.zoomonkey.writetrack I/art﹕ Background partial concurrent mark sweep GC freed 44164(3MB) AllocSpace objects, 12(17MB) LOS objects, 13% free, 100MB/116MB, paused 733us total 153.960ms
03-02 08:37:55.729 24274-24292/com.designs.zoomonkey.writetrack I/art﹕ Background partial concurrent mark sweep GC freed 44761(3MB) AllocSpace objects, 6(40MB) LOS objects, 16% free, 81MB/97MB, paused 1.024ms total 100.780ms
03-02 08:37:56.088 24274-24274/com.designs.zoomonkey.writetrack D/Error﹕ ERR: exClass=java.lang.StackruError
03-02 08:37:56.088 24274-24274/com.designs.zoomonkey.writetrack D/Error﹕ ERR: exMsg=stack size 8MB
03-02 08:37:56.088 24274-24274/com.designs.zoomonkey.writetrack D/Error﹕ ERR: file=Parcel.java
03-02 08:37:56.088 24274-24274/com.designs.zoomonkey.writetrack D/Error﹕ ERR: class=android.os.Parcel
03-02 08:37:56.088 24274-24274/com.designs.zoomonkey.writetrack D/Error﹕ ERR: method=writeArrayMapInternal line=628
03-02 08:37:56.176 24274-24274/com.designs.zoomonkey.writetrack D/Error﹕ ERR: stack=java.lang.StackruError: stack size 8MB
at android.os.Parcel.writeArrayMapInternal(Parcel.java:628)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapInternal(Parcel.java:638)
at android.os.BaseBundle.writeToParcelInner(BaseBundle.java:1313)
at android.os.Bundle.writeToParcel(Bundle.java:1096)
at android.os.Parcel.writeBundle(Parcel.java:663)
at android.os.Parcel.writeValue(Parcel.java:1259)
at android.os.Parcel.writeArrayMapI
03-02 08:37:56.178 24274-24274/com.designs.zoomonkey.writetrack D/Error﹕ ERR: TOTAL BYTES WRITTEN: 13512464
03-02 08:37:56.181 24274-24274/com.designs.zoomonkey.writetrack E/JavaBinder﹕ !!! FAILED BINDER TRANSACTION !!!
03-02 08:37:56.185 24274-24274/com.designs.zoomonkey.writetrack E/AndroidRuntime﹕ Error reporting crash
android.os.TransactionTooLargeException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:496)
at android.app.ActivityManagerProxy.handleApplicationCrash(ActivityManagerNative.java:4100)
at com.android.internal.os.RuntimeInit$UncaughtHandler.uncaughtException(RuntimeInit.java:89)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)\
Код, который я использую для преобразования Object в Bundle и наоборот
public static Bundle convertProjectToBundle(Project project) {
Bundle bundle = new Bundle();
bundle.putLong(ProjectContract.ProjectsTable._ID, project.getProjectId());
bundle.putString(ProjectContract.ProjectsTable.COLUMN_PROJECT_NAME, project.getProjectName());
bundle.putString(ProjectContract.ProjectsTable.COLUMN_PROJECT_DUE_DATE, ProjectContract.getDbDateString(project.getProjectDueDate()));
bundle.putLong(ProjectContract.ProjectsTable.COLUMN_PROJECT_GOAL, project.getProjectGoal());
bundle.putLong(ProjectContract.ProjectsTable.COLUMN_TOTAL_WORD_COUNT, project.getTotalWordCount());
bundle.putString(ProjectContract.ProjectsTable.COLUMN_GOAL_UNIT, project.getGoalUnit());
bundle.putString(ProjectContract.ProjectsTable.COLUMN_ARCHIVED_FLAG, project.getArchivedFlag());
bundle.putString(ProjectContract.ProjectsTable.COLUMN_PROJECT_START_DATE, ProjectContract.getDbDateString(project.getStartDate()));
bundle.putLong(ProjectContract.ProjectsTable.COLUMN_PROJECT_START_WORD_COUNT, project.getStartWordCount());
bundle.putInt(NO_OF_HOURS_LOGGED, project.getNoOfHoursLogged());
return bundle;
}
public static Project convertBundleToProject(Bundle bundle) {
Project project = new Project(
bundle.getLong(ProjectContract.ProjectsTable._ID, -1),
bundle.getString(ProjectContract.ProjectsTable.COLUMN_PROJECT_NAME, ""),
ProjectContract.getDateFromDb(bundle.getString(ProjectContract.ProjectsTable.COLUMN_PROJECT_DUE_DATE, "19000101")),
bundle.getLong(ProjectContract.ProjectsTable.COLUMN_PROJECT_GOAL, 0),
bundle.getLong(ProjectContract.ProjectsTable.COLUMN_TOTAL_WORD_COUNT, 0),
bundle.getString(ProjectContract.ProjectsTable.COLUMN_GOAL_UNIT, "words"),
bundle.getString(ProjectContract.ProjectsTable.COLUMN_ARCHIVED_FLAG, "Y"),
ProjectContract.getDateFromDb(bundle.getString(ProjectContract.ProjectsTable.COLUMN_PROJECT_START_DATE, "19000101")),
bundle.getLong(ProjectContract.ProjectsTable.COLUMN_PROJECT_START_WORD_COUNT, 0)
);
project.setNoOfHoursLogged(bundle.getInt(NO_OF_HOURS_LOGGED, 0));
return project;
}
}