【问题标题】:Idle Time out Error空闲超时错误
【发布时间】:2015-11-23 17:08:59
【问题描述】:

我的 MvvmCross Android 应用程序运行良好,在合理的时间内恢复正常后恢复正常,但如果时间跨度过多,则无法恢复良好。它不显示活动内容,而是显示一个带有标题的操作栏,没有任何菜单项内容。它会产生“Object reference null”类型的异常。

我知道这是 Activity 生命周期问题,但运气不好。

这是我的代码:

public class MyFragmentActivity : AppCompatActivity, IMvxEventSourceActivity
{

   protected override void OnCreate(Bundle bundle)

{

  base.OnCreate(bundle);
  CreateCalled.Raise(this, bundle);
  Mvx.Resolve();

}

    protected override void OnDestroy()
    {

        DestroyCalled.Raise(this);
        base.OnDestroy();
    }

    protected override void OnNewIntent(Intent intent)
    {
        base.OnNewIntent(intent);
        NewIntentCalled.Raise(this, intent);
    }

    protected override void OnResume()
    {
        base.OnResume();
        ResumeCalled.Raise(this);
    }

    protected override void OnPause()
    {
        PauseCalled.Raise(this);
        base.OnPause();
    }

    protected override void OnStart()
    {
        base.OnStart();
        StartCalled.Raise(this);
    }

    protected override void OnRestart()
    {
        base.OnRestart();
        RestartCalled.Raise(this);
    }

    protected override void OnStop()
    {
        StopCalled.Raise(this);
        base.OnStop();
    }

    public override void StartActivityForResult(Intent intent, int requestCode)
    {
        StartActivityForResultCalled.Raise(this, new MvxStartActivityForResultParameters(intent, requestCode));
        base.StartActivityForResult(intent, requestCode);
    }

    protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
    {
        ActivityResultCalled.Raise(this, new MvxActivityResultParameters(requestCode, resultCode, data));
        base.OnActivityResult(requestCode, resultCode, data);
    }

    protected override void OnSaveInstanceState(Bundle outState)
    {
        SaveInstanceStateCalled.Raise(this, outState);
        base.OnSaveInstanceState(outState);
    }

    protected override void Dispose(bool disposing)
    {
        if (disposing)
        {
            DisposeCalled.Raise(this);
        }
        base.Dispose(disposing);
    }

    public event EventHandler DisposeCalled;
    public event EventHandler<MvxValueEventArgs<Bundle>> CreateWillBeCalled;
    public event EventHandler<MvxValueEventArgs<Bundle>> CreateCalled;
    public event EventHandler DestroyCalled;
    public event EventHandler<MvxValueEventArgs<Intent>> NewIntentCalled;
    public event EventHandler ResumeCalled;
    public event EventHandler PauseCalled;
    public event EventHandler StartCalled;
    public event EventHandler RestartCalled;
    public event EventHandler StopCalled;
    public event EventHandler<MvxValueEventArgs<Bundle>> SaveInstanceStateCalled;
    public event EventHandler<MvxValueEventArgs<MvxStartActivityForResultParameters>> StartActivityForResultCalled;
    public event EventHandler<MvxValueEventArgs<MvxActivityResultParameters>> ActivityResultCalled;

} 

请帮助解决这个问题。

谢谢

【问题讨论】:

    标签: android android-activity mvvmcross lifecycle


    【解决方案1】:

    为什么要复制所有代码? MvvmCross 内置了对 AppCompat 的支持:https://github.com/MvvmCross/MvvmCross-AndroidSupport/tree/master/Samples

    你可以从 MvxAppCompatActivity 继承

    public class LoginActivity : MvxAppCompatActivity<LoginViewModel>
    {
        protected override void OnCreate (Bundle bundle)
        {
            base.OnCreate (bundle);
            SetContentView ( Resource.Layout.activity_login );
        }
    }
    

    如果你想缓存片段,你甚至可以使用 MvxCachingFragmentCompatActivity

    【讨论】:

    • @martijin00,我有 2 个问题 1. MvxAppCompatActivity 是否解决了我的活动生命周期问题? 2.目前我使用的是MvvmCross 3.5.1,无法获取MvxAppCompatActivity类,是否应该将mvvmCross升级到4.0。
    • 是的,它应该可以解决您的生命周期问题,并且您应该更新到 4.0 才能使用它。
    • @martijin00,我更新了 mvvmcross 4.0,现在我收到很多错误,例如“类型 'IMvxViewModel' 在未引用的程序集中定义。您必须添加对程序集'Cirrious.MvvmCross 的引用,版本=1.0.0.0,文化=中性,PublicKeyToken=e16445fd9b451819'。"用于 IMvxViewModel、IMvxView、IMvxDisposeSource、IMvxDataConsumer。
    • 这听起来像是您的软件包配置错误。您应该能够通过确保所有软件包都处于最新测试版来解决这个问题。如果您需要更详细的帮助,我建议您加入 Slack:xamarinchat.herokuapp.com
    猜你喜欢
    • 2013-06-09
    • 2015-12-25
    • 2011-01-31
    • 1970-01-01
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-22
    相关资源
    最近更新 更多