Ошибка переполнения стека и слишком большая ошибка транзакции на 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;
    }
}

0 ответов

Другие вопросы по тегам