4

我有一个应用程序,每次应用程序来自后台时,我都需要提示用户输入 PIN。

我从@hackbod 和@commonsware 的stackoverflow 中查看了几个答案,我从@commonsware 实现了超时方法,它运行良好,但我的用户对此并不满意。当应用程序来自后台时,他们希望每次都提示输入 PIN。

现在我通过让每个活动增加 onStart 中的计数器并减少 onStop 中的计数来实现来自@hackbod 的解决方案。 Android检测应用程序是否进入后台

但问题是当用户更改当前活动的方向时,计数器设置回 0 并且我的应用程序认为用户来自后台。我的 onStart() 递增计数器,而 onStop 递减计数器。我希望 android 来处理方向变化,因为我有不同的布局用于不同的方向。

我现在不想使用 GET_TASKS 方法。所有建议表示赞赏..

4

2 回答 2

2

看一下活动生命周期。如果我要完成这样的事情,我会让每个活动都请求一个 pin,除非他们的活动是从一个意图开始的,并且当前 pin 的 Extra 值。

启动活动:

Intent intent = new Intent(getBaseContext(), NewActivity.class);
intent.putExtra("PIN", storedPIN);
startActivity(intent);

活动开始:

@Override
public void onResume() {
    super.onResume();

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        String value = extras.getString("PIN");
    }

    //Check pin to make sure it matches stored pin
    //Else prompt for pin
}

在这种方法下,当应用程序第一次启动时,它会提示输入密码。在主活动启动其他活动时输入 pin 后,它将传递存储的 PIN,并且不会再次提示输入 pin。

当它开始另一个活动时,您可能还必须清除当前活动的额外内容。

于 2012-10-17T18:43:40.697 回答
0

在某个时刻,我正在寻找非常相似的行为。这是我提出的赏金问题:

如何始终从 Android 上的启动活动开始?

它有很多不同的方法。然而,他们每个人都有一些缺点。

于 2012-10-17T18:50:32.580 回答