活动之间的合作

时间:2015-06-11 17:57:47

标签: android

我已将锁屏逻辑插入到我的应用中。它显示了ComfirmPatternActivity(在我的MainActivity之上),它控制图形密码输入是正确的。 当MainActivity的onCreate()方法被调用时,一切正常。但是当我简单地关闭应用程序而不是破坏MainActivity时,我也希望锁定屏幕。所以它来自onRestart() - >的onResume()。在onResume()中我放置了方法handleLockScreen();和onCreate()一样。但是现在我进入了无限循环,它向我展示了ComfirmPatternActivity屏幕多年。它在用户输入正确的引脚之后发出了ComfirmPatternActivity中代码的最后一个命令 - 是Activity finish()。在完成后()我重定向到MainActivity.onResume() - 栈上的prev活动 - 我再次启动ComfirmPatternActivity()等等。我想要简历逻辑,以防用户再次按下应用程序图标,而不是顶级活动被销毁。如何处理? Thx提前。

MainActivity

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    handleLockScreen();
    setContentView(R.layout.activity_main);
}

protected void onResume() {
    super.onResume();
    handleLockScreen();

...

public void handleLockScreen(){

    SharedPreferences prefs = this.getSharedPreferences("LOCK_SCREEN",
            Context.MODE_PRIVATE);
    String lock_screen_code = prefs.getString("LOCK_SCREEN_CODE","");
    if (lock_screen_code.isEmpty()) {
        Intent intent = new Intent(this, SampleSetPatternActivity.class);
        this.startActivity(intent);
    }

    else{
        Intent intent = new Intent(this, SampleConfirmPatternActivity.class);
        this.startActivity(intent);
    }
}

公共类SampleConfirmPatternActivity扩展了ConfirmPatternActivity {

    SharedPreferences prefs = this.getSharedPreferences("LOCK_SCREEN",
            Context.MODE_PRIVATE);
    String patternSha1 = prefs.getString("LOCK_SCREEN_CODE","");
    return TextUtils.equals(PatternUtils.patternToSha1String(pattern), patternSha1);

... 在此活动中进一步调用finish()     }

这个finish()返回到我的onResume(),它会再次触发。我想要处理onResume(),以防万一smth外部发生到我的应用程序,如用户返回我的应用程序等。我不想回到onResume()当检查密码时一切正常。

1 个答案:

答案 0 :(得分:0)

你可以在LockScreen Activity中声明一个布尔值(全局到应用程序)来解决这个问题并告诉(对于MainActivity)它是从外部来自onResume还是来自LockScreen(y)