Android 设置PIN屏幕

Android 设置PIN屏幕,android,android-lifecycle,Android,Android Lifecycle,我已经创建了一个“输入PIN”屏幕。此pin活动将在活动A的启动时调用,如下所示- @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.d("pin", "on start 2"); if (MainActivity.flag) { Intent intent = ne

我已经创建了一个“输入PIN”屏幕。此pin活动将在活动A的启动时调用,如下所示-

@Override
    protected void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        Log.d("pin", "on start 2");
        if (MainActivity.flag) {
            Intent intent = new Intent(con, PinActivity.class);
            MainActivity.flag = false;
            startActivity(intent);

        }
    }
然而,我只想在用户从后台到前台时显示此活动。当它来自活动B时不是。活动B在活动A之后

这个逻辑依赖于MainActivity.flag的值,所以我设置了它

在桌面上为true,以便在进入前台时显示pin屏幕。 和 在活动B的onBackPressed中,have put flag=false,这样当从B到A时,pin屏幕不会显示。 但逻辑上存在缺陷,因为pin屏幕在从B到A的过程中显示,而不应该显示。
PS-如果您不理解我的问题,请让我澄清。

您可以将额外数据从B传递到A,以澄清它是从B传递到A,而不是从背景。 然后在A中,显示Pin活动的条件应该检查是否存在额外的数据

Intent theintent = new Intent(A.this,B.java);
theintent.putExtra("fromB",true);
startActivity(theintent);
并在活动A中登记:

Intent i= getIntent();
i.getExtra("fromB");

你应该问自己的第一件事是:为什么你不想只在后台提交时显示pin活动

为用户存储pin码,这样他就不必每次都重新键入pin码,这不是很有趣吗?您可以使用SharedReference存储它,并且仅当您没有任何存储的pin时才将用户重定向到此屏幕。如果用户希望手动修改pin,则可以为其添加一个按钮

编辑:

如果您真的必须坚持此工作流,您可以执行以下操作:

@Override
protected void onCreate(Bundle savedInstanceState)
{
    ...

    if (savedInstanceState == null)
    {
        Intent intent = new Intent(this, PinActivity.class);
        startActivity(intent);
    }
}

选中savedInstanceState,确保仅在第一次创建活动时才会调用它,并且它应适合您的工作流程。

您会发现这不适合回答我的问题。我有一个不想存储pin的商业案例。这个答案值得投否决票,但我想改为发表评论。这是我的错。你能告诉我更多关于你的工作流程吗。你什么时候从B到A?只有背部,或者你也可以把startactivity从B称为A。