최근에 우리 앱에서 다음과 같은 몇 가지 예외가 발생했습니다 :Xamarin Android - 활동을 시작할 수 없습니다. ComponentInfo {[activityName]} : java.lang.RuntimeException : Parcel android.os.Parcel @ [address]
java.lang.RuntimeException가 : java.lang.RuntimeException가 : 소포 [email protected] : 비 정렬 화 활동 ComponentInfo {com.myapp.android/com.myapp.android.WelcomeActivity}을 (를) 시작할 수 없습니다 알 수없는 형식 코드 2131558952 at offset 736 at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2429) at android.app.Ac android.os에서 android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1283) 에서 tivityThread.handleLaunchActivity (ActivityThread.java:2493) android.app.ActivityThread.access $ 800 (ActivityThread.java:166)에서 .Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loop (Looper.java:136) at android.app.ActivityThread.main (ActivityThread.java:5584) at java.lang.reflect .Method.invokeNative (네이티브 메소드) at java.lang.reflect.Method.invoke (Method.java:515) at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1268) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1084) at dalvik.system.NativeStart.main (네이티브 메서드) 원인 : java.lang.RuntimeException가 : 소포 [email protected] :에서 android.os.Parcel.readSparseArrayInternal에서 android.os.Parcel.readValue (Parcel.java:2087)에서 736 오프셋 2131558952 비 정렬 화 알 수없는 형태 코드 (Parcel.java:2382) at android.os.Parcel.readSparseArray (Parcel.java:1742) at android.os.Parcel.readValue (Parcel.java:2077) android.os.Parcel.readArrayMapInternal (Parcel .java : 2321) at android.os.Bundle.unparcel (Bundle.java:249) at android.os.Bundle.getSparseParcelableArray (Bundle.java:1273) at com.android.internal.policy.impl.PhoneWindow .restoreHierarchyState (PhoneWindow.java:1884) android.app.Activity.onRestoreInstanceStat android.app에서 E android.app.Instrumentation.callActivityOnRestoreInstanceState (Instrumentation.java:1145)에서 android.app.Activity.performRestoreInstanceState (Activity.java:961)에서 (Activity.java:989)
.ActivityThread.performLaunchActivity (ActivityThread.java:2407) 는 ...
보다 11 내 활동을 확인하지만 Parcelable 물건에 관련된 아무것도 없다. 그래서 더 많이 파고 가서 활동에 사용되는 위젯 중 하나에서 Parcelable 코드를 발견했습니다. 나는이 문제를 재현 할 개인적 없었습니다하지만이 https://github.com/xamarin/monodroid-samples/blob/master/ViewPagerIndicator/ViewPagerIndicator/Library/CirclePageIndicator.cs
:
protected override void OnRestoreInstanceState(IParcelable state)
{
try
{
SavedState savedState = (SavedState)state;
base.OnRestoreInstanceState(savedState.SuperState);
mCurrentPage = savedState.CurrentPage;
mSnapPage = savedState.CurrentPage;
}
catch
{
base.OnRestoreInstanceState(state);
// Ignore, this needs to support IParcelable...
}
RequestLayout();
}
protected override IParcelable OnSaveInstanceState()
{
var superState = base.OnSaveInstanceState();
var savedState = new SavedState(superState)
{
CurrentPage = mCurrentPage
};
return savedState;
}
private class SavedState : BaseSavedState
{
public int CurrentPage { get; set; }
public SavedState(IParcelable superState) : base(superState)
{
}
private SavedState(Parcel parcel) : base(parcel)
{
CurrentPage = parcel.ReadInt();
}
public override void WriteToParcel(Parcel dest, ParcelableWriteFlags flags)
{
base.WriteToParcel(dest, flags);
dest.WriteInt(CurrentPage);
}
[ExportField("CREATOR")]
private static SavedStateCreator InitializeCreator()
{
return new SavedStateCreator();
}
private class SavedStateCreator : Java.Lang.Object, IParcelableCreator
{
public Java.Lang.Object CreateFromParcel(Parcel source)
{
return new SavedState(source);
}
public Java.Lang.Object[] NewArray(int size)
{
return new Object[size];
}
}
}
코드는 실제로 여기에이 예에서 찍은 : 나는 그것이 다음 코드에 의해 야기 될 수 있음을 매우 높은 의심을 우리의 앱에 대한 충돌보고에서 나옵니다.
이 정보에 대한 조언을 보내 주시면 감사하겠습니다.