我已将锁屏逻辑插入到我的应用中。它显示了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()当检查密码时一切正常。
答案 0 :(得分:0)
你可以在LockScreen Activity中声明一个布尔值(全局到应用程序)来解决这个问题并告诉(对于MainActivity)它是从外部来自onResume还是来自LockScreen(y)