在等待网络请求并且活动被暂停时,如何显示正确的UI?

时间:2018-09-19 20:27:08

标签: android

我有一个要求用户输入个人识别码的密码,然后该密码会发出网络请求以验证其登录名。如果在此身份验证过程中,用户单击“最近的应用程序” /“概述”按钮,等待一段时间,然后返回到应用程序,则尽管请求确实完成,但UI并未更新。

我认为问题发生在onPause()中,似乎是通过暂停活动来保存当前屏幕,并在恢复时显示此屏幕,而不显示下一个屏幕。

在身份验证之后或恢复时,是否可以更新?感谢您的帮助,谢谢!

@Override
public void onResume() {
    super.onResume();
    Utils.currentActivity = this;

    boolean wakingUp = getIntent().getBooleanExtra(Utils.MY_EXTRA_WAKING_UP, false);
    if (wakingUp) {
        Window window = getWindow();
        window.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);
        window.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);
        window.addFlags(WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON);
    }

    My_Screen screen = getScreen();
    if(screen != null)
        screen.onDisplay();         // performs some user defined 
                                    // function, currently does 
                                    // nothing .

    String notificationId = getIntent().getStringExtra(Utils.MY_EXTRA_NOTIFICATION_ID);
    if (notificationId != null) {
        getIntent().removeExtra(Utils.MY_EXTRA_NOTIFICATION_ID);
        Utils.callMethod(Utils.NOTIFICATIONS_SERVICE, "dispatchNotificationTriggeredEvent", notificationId);
    }
}

@Override
public void onPause() {
    super.onPause();
    Utils.callMethod(Utils.APPLICATION_SERVICE, "onActivityPaused", this);

    My_Screen screen = getScreen();
    if (screen != null)
        screen.onHide();            // Performs user defined function
                                    // currently does nothing.
}

1 个答案:

答案 0 :(得分:0)

网络请求完成后,设置一个sharedPreference来表明它已完成。例如:

getSharedPreferences(
      "mypref", Context.MODE_PRIVATE).edit().putBoolean("completed",true).apply();

并在onResume中检查此首选项是否为true。如果是真的,则相应地更新用户界面。