Как всегда начинать активность входа в систему, когда приложение выходит на передний план из фона?
Я имею LoginActivity
это моя ОСНОВНАЯ, а также деятельность LAUNCHER, и у меня также есть другие виды деятельности, такие как CustomerAddActivity
& CustomerListActivity
,
Теперь предположим, что я в CustomerAddActivity
и я нажал кнопку "Домой", и приложение переходит в фоновый режим, и когда приложение снова выходит на передний план, оно должно запросить LoginActivity
сначала, если действительные учетные данные (простые учетные данные, такие как имя пользователя и пин-код из sq-lite), затем вернитесь к CustomerAddActivity
с его состоянием.
2 ответа
Вы можете передать информацию для входа в систему при запуске CustomerAddActivity из LoginActivity
In LoginActctivity
Intent intent = new Intent(this, CustomerAddActivity.class);
intent.putExtra("login_info", "success");
startActivity(intent);
затем в onResume () CustomerAddActivity() удалите эту регистрационную информацию
@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.
Вернувшись в свое приложение, вы можете 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;
}
}
}