我有LoginActivity
这是我的主要活动以及启动活动,我还有其他活动,例如CustomerAddActivity
& CustomerListActivity
。
现在假设我在CustomerAddActivity
并按下主页按钮,应用程序转到后台,当应用程序再次出现在前台时,如果有效凭据(简单凭据等)必须首先要求LoginActivity
作为来自sq-lite的用户名和密码)然后返回CustomerAddActivity
的状态。
答案 0 :(得分:-1)
返回应用时,您可以startActivityForResult
登录用户,然后返回上一个状态。为了在任何地方执行此操作,您可以像这样定义一个抽象BaseActivity
,并从所有其他类中定义override
:
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;
}
}
}
答案 1 :(得分:-1)
从LoginActivity
启动CustomerAddActivity时,您可以传递intent中的登录信息在LoginActitivity中
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出现在前台,它就会首先检查login_info。如果它无法找到它将启动LoginAvctivity。