マルチタスクの問題が原因で Android によってアプリケーションが強制終了された直後に、アクティビティの 1 つが表示されます。アプリケーションがアプリケーションを再作成しようとするとクラッシュしますMyActivity
。MvxDialogActivity
つまり、アプリケーションをバックグラウンドに移動し、コンソール (DDMS) に次のメッセージが表示されるまで、他のアプリケーション間の切り替えを開始する前に、すべてが正常に機能します。
I/ActivityManager( 333): No longer want com.my.app (pid 4444): hidden #22
アプリケーションを再度開くと、そのアクティビティを再作成しようとするため、そのうちの 1 つが次のスタック トレースでクラッシュします。
UNHANDLED EXCEPTION: System.NullReferenceException: Object reference not set to an instance of an object
at Cirrious.CrossCore.Mvx.Resolve<Cirrious.MvvmCross.Binding.BindingContext.IMvxBindingContextStack`1<Cirrious.MvvmCross.Binding.Droid.BindingContext.IMvxAndroidBindingContext>> () <0x00038>
at Cirrious.MvvmCross.Binding.BindingContext.MvxBindingContextStackRegistration`1<Cirrious.MvvmCross.Binding.Droid.BindingContext.IMvxAndroidBindingContext>.get_Stack () <0x0001f>
at Cirrious.MvvmCross.Binding.BindingContext.MvxBindingContextStackRegistration`1<Cirrious.MvvmCross.Binding.Droid.BindingContext.IMvxAndroidBindingContext>..ctor (Cirrious.MvvmCross.Binding.Droid.BindingContext.IMvxAndroidBindingContext) <0x00017>
at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.CommonInflate (int,Android.Views.ViewGroup,Cirrious.MvvmCross.Binding.Droid.Binders.MvxBindingLayoutInflatorFactory) <0x0004b>
at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxAndroidBindingContext.BindingInflate (int,Android.Views.ViewGroup) <0x0004f>
at Cirrious.MvvmCross.Binding.Droid.BindingContext.MvxBindingContextOwnerExtensions.BindingInflate (Cirrious.MvvmCross.Binding.BindingContext.IMvxBindingContextOwner,int,Android.Views.ViewGroup) <0x000c7>
at Cirrious.MvvmCross.Dialog.Droid.Views.MvxDialogActivity.SetContentView (int) <0x0001f>
at Droid.UI.Impl.MyActivity.OnCreate (Android.OS.Bundle) <0x0008f>
プロジェクト内で MvvmCross をセットアップしようとしたときに行った間違いが原因で発生していると思います。
このクラッシュの他の理由はありますか? このクラッシュを修正するにはどうすればよいか教えてください。
ここに私のSetup.cs
ファイルがあります:
public class Setup : MvxAndroidDialogSetup
{
public Setup (Context applicationContext)
: base (applicationContext)
{
}
protected override IMvxApplication CreateApp ()
{
return new MvvmCrossApplication ();
}
}
public class MvvmCrossApplication : MvxApplication
{
public override void Initialize ()
{
RegisterAppStart<ApplicationViewModel>();
}
}
Android がアプリを再作成しているときMyActivity
に、最初の MvvmCross セットアップが完了する前に新しいインスタンスをインスタンス化しているようです。おそらく、アプリが強制終了されたときに、同じクラスの有効なインスタンスがあったためです。起こっている可能性はありますか?
これは、私のMyActivity
クラスが画面に表示するもののスクリーンショットです。
以下を持つ MvxDialogActivity です。
- アクションバー;
- カスタム レイアウト (次の ID を持つカスタム ListView を含む
android:id="@android:id/list"
); と - ViewModel の更新に応じて更新されるルート要素。