OnResume вызывается много раз, даже после того, как он выходит на передний план. Почему?Android

Форум для тех, кто программирует под Android
Anonymous
OnResume вызывается много раз, даже после того, как он выходит на передний план. Почему?

Сообщение Anonymous »

Я хочу вызывать onResume только тогда, когда мое приложение работает в фоновом режиме. У меня есть два действия A и B. При переключении с действия B на A мне нужно предотвратить вызов onPause() и onResume(). Если моего приложения больше нет на экране или оно переходит в фоновое состояние, следует вызывать только onResume и onPause. Ниже приведен мой фрагмент кода. пожалуйста, помогите!
BiometricManager mBiometricManager;
UserSession userSession;
boolean shouldExecuteOnFirstTime;
boolean isPaused = true;
private Dialog dialog;
private ActivityNewMainBinding binding;
SharedPreferences mPrefs;
SharedPreferences.Editor prefsEditor;

@Override
protected void onPause() {
super.onPause();
PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);
isPaused = pm.isScreenOn();

}

@Override
protected void onPostResume() {
super.onPostResume();
/* */
if(isPaused)
{
if (shouldExecuteOnFirstTime) {
if (userSession.isLoggedInV2()) {
Intent intent = new Intent(this, LocksWithoutKeystoreActivity.class);
startActivity(intent);
mBiometricManager = new BiometricManager.BiometricBuilder(getApplicationContext())
.setTitle(getString(R.string.biometric_title))
.setDescription(getString(R.string.biometric_description))
.setNegativeButtonText(getString(R.string.biometric_negative_button_text))
.build();
//start authentication
mBiometricManager.authenticate(new BiometricCallback() {
@Override
public void onSdkVersionNotSupported() {
Toast.makeText(getApplicationContext(),
getString(R.string.biometric_error_sdk_not_supported),
Toast.LENGTH_LONG).show();

}

@Override
public void onBiometricAuthenticationNotSupported() {
Toast.makeText(getApplicationContext(), getString(R.string.biometric_error_hardware_not_supported), Toast.LENGTH_LONG).show();

}

@Override
public void onBiometricAuthenticationNotAvailable() {
Toast.makeText(getApplicationContext(), getString(R.string.biometric_error_fingerprint_not_available), Toast.LENGTH_LONG).show();
startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);

}

@Override
public void onBiometricAuthenticationPermissionNotGranted() {

}

@Override
public void onBiometricAuthenticationInternalError(String error) {

}

@Override
public void onAuthenticationFailed() {

}

@RequiresApi(api = Build.VERSION_CODES.M)
@Override
public void onAuthenticationCancelled() {
Intent intent = new Intent(getApplicationContext(), LocksWithoutKeystoreActivity.class);
startActivity(intent);
Toast.makeText(getApplicationContext(), getString(R.string.biometric_cancelled), Toast.LENGTH_SHORT).show();
mBiometricManager.cancelAuthentication();

}

@Override
public void onAuthenticationSuccessful() {
try {
Intent intent = new Intent(getApplicationContext(), MainDashBoardActivity.class);
startActivity(intent);
} catch (Exception e) {
e.printStackTrace();
}

}

@Override
public void onAuthenticationHelp(int helpCode, CharSequence helpString) {

}

@Override
public void onAuthenticationError(int errorCode, CharSequence errString) {

}
});

}
} else {
shouldExecuteOnFirstTime = true;
}
}

}


Подробнее здесь: https://stackoverflow.com/questions/624 ... ground-why

Вернуться в «Android»