yes I am using one custom ViewGroup & I am handling saveInstanceState
& restoreInstanceState in it.(I just forgot to think about this custom
view). So yup I understand the probability is the exception comes
here. I checked my code, it has only 1 state variable to store. So no
miss-order handling is there. When I write to parcel its size is 660 &
when read it size is 1013. here is the code snippet

protected Parcelable onSaveInstanceState() {
                final SavedState state = new
SavedState(super.onSaveInstanceState());
                state.currentState = this.currentState;
                return state;
        }

        /**
         * Restore the previous saved current screen
         */
        @Override
        protected void onRestoreInstanceState(Parcelable state) {
                SavedState savedState = (SavedState) state;
                super.onRestoreInstanceState(savedState.getSuperState());
                if (savedState.currentScreen != -1) {
                        currentState = savedState.currentState;
                }
        }

        // ========================= INNER CLASSES
==============================

        public interface onViewChangedEvent {
                void onViewChange(int currentViewIndex);
        }

        /**
         * A SavedState which save and load the current screen
         */
        public static class SavedState extends BaseSavedState {
                int currentState = -1;

                /**
                 * Internal constructor
                 *
                 * @param superState
                 */
                SavedState(Parcelable superState) {
                        super(superState);
                }

                /**
                 * Private constructor
                 *
                 * @param in
                 */
                private SavedState(Parcel in) {
                        super(in);
                        Log.d("------------", "parcelsize() in "+in.dataSize());
                        currentState = in.readInt();
                }

                /**
                 * Save the current screen
                 */
                @Override
                public void writeToParcel(Parcel out, int flags) {
                        super.writeToParcel(out, flags);
                        out.writeInt(currentState);
                        Log.d("------------", "parcelsize() out 
"+out.dataSize());
                }

                /**
                 * Return a Parcelable creator
                 */
                public static final Parcelable.Creator<SavedState> CREATOR = new
Parcelable.Creator<SavedState>() {
                        public SavedState createFromParcel(Parcel in) {
                                return new SavedState(in);
                        }

                        public SavedState[] newArray(int size) {
                                return new SavedState[size];
                        }
                };
        }

On May 18, 3:18 pm, Kostya Vasilyev <[email protected]> wrote:
> The error happens while restoring view states (as already pointed out by
> Zsolt), do you have any custom views in this activity? Do they have
> methods to save / restore instance state?
>
> It's hard to be more specific. Since it happens on your phone, you could
> try debugging this into the framework sources.
>
> -- Kostya
>
> 18.05.2011 13:48, Namrata пишет:
>
>
>
> > Latest observation, if I am on activity A&  then I kill app with app
> > killer application&  after that I try to relaunch my app, generally
> > here above mentioned exception comes.
>
> > On May 18, 2:37 pm, Namrata<[email protected]>  wrote:
> >> @Kostya, thanks for replying...I am not overriding
> >> onSaveInstanceState()&  onRestroreInstanceState() methods. So whatever
> >> super ie Activity class has it is getting executed. Thats why I am
> >> surprised that I am using Intent extras for my purpose and not
> >> touching above 2 methods still its throwing exception in that method.
> >> Any clue?
>
> >> On May 18, 2:18 pm, Kostya Vasilyev<[email protected]>  wrote:
>
> >>> Thetypecodeis a prefix in the data stream that tells Parcelable the
> >>>typeof data that follows.
> >>> See Parcel.java, method readValue(), around lines 1700-1800.
> >>> All the codes are small numbers, between -1 and 24. Thecodein your
> >>> logcat is much larger.
> >>> This can be caused by data being read in a different order than it's
> >>> been written. For example:
> >>> parcel.writeInt(...)
> >>> parcel.writeString()
> >>> ...
> >>> parcel.readString()
> >>> parcel.readInt()
> >>> It can also be caused by data corruption of some sort, for some reason.
> >>> You don't seem to be using parcel directly, but still, maybe this can
> >>> give you some more ideas.
> >>> There is a call to Activity.onRestoreInstanceState, so there is a
> >>> parcelable (bundle) involved here.
> >>> -- Kostya
> >>> 18.05.2011 12:49, Namrata пишет:
> >>>> @Zsolt thanks for replying..but I didn't understand what are you
> >>>> saying, can u plz explain it in detail?
> >>>> On May 18, 12:42 pm, Zsolt Vasvari<[email protected]>    wrote:
> >>>>> The stack trace you are showing doesn't seem to involve your intent
> >>>>> extras.  It appears to be restoring the state of your screen when it's
> >>>>> crashing.
> >>>>> On May 18, 3:35 pm, Namrata<[email protected]>    wrote:
> >>>>>> Hi,
> >>>>>> I have one activity A with requires few values passed in intent. Those
> >>>>>> values are oftypeboolean&    int array. I am passing these these
> >>>>>> values from activity B in intent as intent.putExtra(key1, boolean)&
> >>>>>> intent.putExtra(key2, int[]). In activity A  I am reading it as
> >>>>>> Intent i = getIntent();
> >>>>>> Bundle b = i.getExtras();
> >>>>>> boolean flag = b.getBoolean(key1);
> >>>>>> int[] array = b.getIntArray(key2);
> >>>>>> It works perfect all the time but there is one case where it throws
> >>>>>> exception
> >>>>>>    java.lang.RuntimeException: Parcel android.os.Parcel@4611b4a8:
> >>>>>>Unmarshallingunknowntypecode2131427514 at offset 456
> >>>>>> at
> >>>>>> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
> >>>>>> 2787)
> >>>>>> at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:
> >>>>>> 2803)
> >>>>>> at android.app.ActivityThread.access$2300(ActivityThread.java:135)
> >>>>>> at android.app.ActivityThread$H.handleMessage(ActivityThread.java:
> >>>>>> 2136)
> >>>>>> at android.os.Handler.dispatchMessage(Handler.java:99)
> >>>>>> at android.os.Looper.loop(Looper.java:144)
> >>>>>> at android.app.ActivityThread.main(ActivityThread.java:4937)
> >>>>>> at java.lang.reflect.Method.invokeNative(Native Method)
> >>>>>> at java.lang.reflect.Method.invoke(Method.java:521)
> >>>>>> at com.android.internal.os.ZygoteInit
> >>>>>> $MethodAndArgsCaller.run(ZygoteInit.java:868)
> >>>>>> at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
> >>>>>> at dalvik.system.NativeStart.main(Native Method)
> >>>>>> Caused by: java.lang.RuntimeException: Parcel
> >>>>>> android.os.Parcel@4611b4a8:Unmarshallingunknowntypecode2131427514
> >>>>>> at offset 456
> >>>>>> at android.os.Parcel.readValue(Parcel.java:1838)
> >>>>>> at android.os.Parcel.readSparseArrayInternal(Parcel.java:2037)
> >>>>>> at android.os.Parcel.readSparseArray(Parcel.java:1493)
> >>>>>> at android.os.Parcel.readValue(Parcel.java:1828)
> >>>>>> at android.os.Parcel.readMapInternal(Parcel.java:2008)
> >>>>>> at android.os.Bundle.unparcel(Bundle.java:208)
> >>>>>> at android.os.Bundle.getSparseParcelableArray(Bundle.java:1167)
> >>>>>> at
> >>>>>> com.android.internal.policy.impl.PhoneWindow.restoreHierarchyState(PhoneWin­dow.java:
> >>>>>> 1493)
> >>>>>> at android.app.Activity.onRestoreInstanceState(Activity.java:850)
> >>>>>> at android.app.Activity.performRestoreInstanceState(Activity.java:822)
> >>>>>> at
> >>>>>> android.app.Instrumentation.callActivityOnRestoreInstanceState(Instrumentat­ion.java:
> >>>>>> 1142)
> >>>>>> at
> >>>>>> android.app.ActivityThread.performLaunchActivity(ActivityThread.java:
> >>>>>> 2765)
> >>>>>> ... 11 more
> >>>>>> I dont have exact reproducible steps for this, but this is very
> >>>>>> annoying, what to do?
> >>>>>> Thanks in advance
> >>> --
> >>> Kostya Vasilyev --http://kmansoft.wordpress.com
>
> --
> Kostya Vasilyev --http://kmansoft.wordpress.com

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to