我有一个应用程序,每当应用程序来自后台时,我都需要提示用户输入PIN。
我从@hackbod和@commonsware查看了stackoverflow的几个答案 我实现了@commonsware的超时方法,它工作正常,但我的用户对它不满意。他们希望每当应用程序来自后台时都会提示输入PIN码。
现在我正在实现@hackbod的解决方案,让每个活动在onStart中递增计数器并减少onStop中的计数。 Android detecting if an application entered the background
但问题是当用户更改当前活动的方向时,计数器会设置回0并且我的应用认为用户来自后台。 我的onStart()递增计数器,onStop递减计数器。 我希望android能够处理方向更改,因为我有不同的布局以适应不同的方向。
我现在不想使用GET_TASKS方法。 所有建议都表示赞赏..
答案 0 :(得分:2)
看看Activity Lifecycle。如果我要完成这样的事情,我会让每个活动请求一个引脚,除非它们以一个intent启动活动,并使用当前引脚启动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,并且不会再次提示该引脚。
当你开始另一项活动时,你可能还必须清除当前活动的额外内容。
答案 1 :(得分:0)
在某些时刻,我一直在寻找非常相似的行为。以下是我提出的赏金问题:
How to always start from a startup activity on Android?
它有很多不同的方法。然而,他们每个人都有一些缺点。