屏幕开启和关闭后恢复Android应用程序抛出IllegalStateException

时间:2016-04-05 08:13:21

标签: android android-fragments xamarin xamarin.forms illegalstateexception

我有FormsAppCompatActivity,每当我在应用处于活动状态时打开屏幕,它就会崩溃。 这些是我承担的步骤: - 开始调试 - >应用程序很好地显示 - 关闭屏幕 - >应用程序仍附加到调试器 - 打开屏幕 - >设置应用程序的MainPage属性后,应用程序崩溃

我有一个超时,在闲置30秒后,应用程序应调用Logout()方法并返回登录页面。 当我通过按下主页按钮暂停应用程序时,此代码仍然有效,当我恢复应用程序而不打开和关闭屏幕时。 我已尝试在OnResume设置延迟,例如:App resuming results in crash with FormsAppCompatActivity 它与FragmentsTransactions在状态丢失后被提交有关,但我不知道如何修复它。

抛出的异常是Java.Lang.IllegalStateException: Can not perform this action after onSaveInstanceState

在MyApp.cs中:

    public MyApp ()
    {
        Start(message: string.Empty);
    }

    private void Start(string message) {
        var mainPage = GetMainPage();
        MainPage = mainPage; //<-- this crashes

        userService.LoggedOut += (sender, e) => {
            ThreadPool.Start(() => {
                Start (e.Message);
            }, ThreadPoolType.Ui);
        };
    }

    protected override void OnSleep ()
    {
        base.OnSleep ();
        sleepDateTime = DateTime.Now;
    }

    protected override void OnResume () {
        base.OnResume();
        var delta = DateTime.Now - sleepDateTime;
        if (delta.TotalSeconds > SECONDS_FOR_TIMEOUT) {
            userService.Logout();
        }
    }

0 个答案:

没有答案