Как всегда начинать активность входа в систему, когда приложение выходит на передний план из фона?

Я имею 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;
        }
    }
}
Другие вопросы по тегам