android - 重启时重新验证 - Android

标签 android android-activity lifecycle android-lifecycle activity-lifecycle

每次调用 onRestart 时我都需要重新验证用户凭据(通常这意味着用户已锁定和解锁屏幕或将其置于后台然后返回)。

所以我这样做了:

@Override
protected void onRestart() {
    super.onRestart();

    Intent intent = new Intent(this, LoginActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setAction(LoginActivity.REAUTHENTICATE);
    startActivity(intent);
}

这有效,显示了 LoginActivity,但是当它完成时,第一个 Activity 的 onRestart 再次被调用,并且 LoginActivity 再次打开。

我该如何处理?

最佳答案

好吧,我用这个来解决它:

    private static final int REAUTHENTICATE = 80;

    private boolean authenticated;

    @Override
    public void onRestart() {
        if(authenticated)
            return;

        Intent intent = new Intent(this, LoginActivity.class);
        intent.setAction(LoginActivity.REAUTHENTICATE);
        startActivityForResult(intent, REAUTHENTICATE);
    }

    @Override
    public void onStop() {
        authenticated = false;
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if(requestCode == REAUTHENTICATE)
            authenticated = true;
    }

好吧,这不是我所期望的,而是有效的,我希望有人找到更好的解决方案。导致 onRestart 在 onActivityResult 之后不断被调用。

关于android - 重启时重新验证 - Android,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11144155/

相关文章:

android - 错误 : Please install Android target 19 (the Android newest SDK) on windows 7 while creating phonegap project

android - 如果子 Activity 崩溃,则返回父 Activity

android - Android UI 线程的工作方式与 Swing UI 线程类似吗?

java - 推迟 Android 绑定(bind)服务的销毁

Android:VLC-android-sdk 增加 60MB 到我的 apk 文件大小

android - JNI .cpp 文件如何将事件发送到 Android 中的 Java 框架

android - 打开图片分享

android - 如何不打开已通过最近的应用程序完成的 Activity

Android 应用程序内存不足问题 - 尝试了所有方法,但仍然一头雾水

ruby - Rails 对象生命周期 - 跨事务对象创建和销毁