Android 当应用程序从后台进入前台时,如何始终启动登录活动?
我有Android 当应用程序从后台进入前台时,如何始终启动登录活动?,android,background-foreground,activity-state,Android,Background Foreground,Activity State,我有LoginActivity,这是我的主要活动和启动活动,我还有其他活动,如CustomerAddActivity和customerlistivity 现在假设我在CustomerAddActivity中,我按下Home按钮,应用程序进入后台,当应用程序再次进入前台时,它必须首先请求LoginActivity如果有效凭证(简单凭证,如sq lite中的用户名和pin),然后返回到CustomerAddActivity,并显示其状态 返回应用程序时,您可以startActivityForResu
LoginActivity
,这是我的主要活动和启动活动,我还有其他活动,如CustomerAddActivity
和customerlistivity
现在假设我在
CustomerAddActivity
中,我按下Home按钮,应用程序进入后台,当应用程序再次进入前台时,它必须首先请求LoginActivity
如果有效凭证(简单凭证,如sq lite中的用户名和pin),然后返回到CustomerAddActivity
,并显示其状态 返回应用程序时,您可以startActivityForResult
登录用户,然后返回到以前的状态。为了从任何地方执行此操作,您可以像这样定义一个抽象的BaseActivity
,并从所有其他类中覆盖它:
public abstract class BaseActivity extends AppCompatActivity {
public static final int REQUEST_CODE = 1;
private boolean shouldCheckCredentials = false;
@Override
protected void onPause() {
shouldCheckCredentials = true;
super.onPause();
}
@Override
protected void onResume() {
if(shouldCheckCredentials){
Intent loginIntent = new Intent(this,LoginActivity.class);
startActivityForResult(loginIntent,REQUEST_CODE);
}
super.onResume();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == BaseActivity.REQUEST_CODE && resultCode == RESULT_OK) {
shouldCheckCredentials = false;
}
}
}
从LoginActivity启动CustomerAddActivity时,可以在intent中传递登录信息 物流竞争力
Intent intent = new Intent(this, CustomerAddActivity.class);
intent.putExtra("login_info", "success");
startActivity(intent);
然后在CustomerAddActivity()的onResume()中删除该登录信息
@Override
protected void onResume() {
super.onResume();
String login = getIntent().getStringExtra("login_info");
if(login != null){
getIntent().removeExtra("login_info");
} else {
startActivity(new Intent(getApplicationContext(), LoginActivity.class));
}
}
因此,每当您的CustomerAddActivity出现在前台时,它都会首先检查登录信息。如果找不到它将启动LoginActivity。我建议您将登录凭据存储在sharePreferences中,并在everyactivity中调用onResume时检查值,如果SharedReferences中没有凭据,则将使用重定向到登录活动。您可能应该重新考虑您的策略,因为这会很快激怒您的用户,如果他们每次都要登录。想象一下,每次你想使用Gmail、Facebook或Twitter应用程序时,你都必须登录。我知道,但这是客户的要求。如此无助