Жизненный цикл активности Android
У меня в программе есть отдельная активность, внутри нее 3 кнопки. При нажатии кнопки данные отправляются в firebase. Но после отправки(setValue) активность перезагружается, как при recreate(), хотя от нее этого не требуется. Поведение активности при нажатии на любую кнопку примерно такое в моем случае, как я выяснил из отладочных выводов в консоль: onCreate -> onStart -> onResume -> нажатие на кнопку -> onPause -> onCreate -> onStart -> onResume -> onStop и дальше по кругу после каждого нажатия. Слушатели на кнопки я установил в onCreate. Еще больше меня запутывает то, что если не обращаться к firebase, нажатия на кнопки не вызывают никаких действий у активности самостоятельно, как и должно быть. Ниже привел практически весь код, речь идет о кнопках типа RadioButton.
public class WorkerCabinetActivity extends AppCompatActivity {
FirebaseUser dbuser = FirebaseAuth.getInstance().getCurrentUser();
DatabaseReference db2 = FirebaseDatabase.getInstance().getReference();
public static final String APP_PREFERENCES = "mysettings";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_worker_cabinet);
Button btnSignOut = findViewById(R.id.sign_out_button);
RadioButton btnOnlineFree = findViewById(R.id.online_free_button);
RadioButton btnOnlineBusy = findViewById(R.id.online_busy_button);
RadioButton btnOffline = findViewById(R.id.offline_button);
btnOnlineBusy.setOnClickListener(v -> db2.child("Users/" + dbuser.getUid() + "/status").setValue("online busy"));
btnOnlineFree.setOnClickListener(v -> db2.child("Users/" + dbuser.getUid() + "/status").setValue("online"));
btnOffline.setOnClickListener(v -> db2.child("Users/" + dbuser.getUid() + "/status").setValue("offline"));
btnSignOut.setOnClickListener(v -> {
SharedPreferences loginPref = getSharedPreferences(APP_PREFERENCES, Context.MODE_PRIVATE);
SharedPreferences.Editor editor = loginPref.edit();
editor.clear();
editor.commit();
startActivity(new Intent(WorkerCabinetActivity.this, MainActivity.class));
finish();
});
}
@Override
protected void onStart() {
super.onStart();
System.out.println("----------------------------onStart--------------------------------");
}
@Override
protected void onResume() {
System.out.println("----------------------------onResume--------------------------------");
super.onResume();
}
@Override
protected void onPause() {
System.out.println("----------------------------onPause--------------------------------");
super.onPause();
}
@Override
protected void onStop() {
super.onStop();
System.out.println("----------------------------onStop--------------------------------");
}
@Override
protected void onRestart() {
super.onRestart();
System.out.println("----------------------------onRestart-------------------------------");
}
}
Вывод в консоли после нажатия кнопки с this.hashCode():
I/System.out: ----------------------------onPause--------------------------------79732252
V/FA: Recording user engagement, ms: 24281
V/FA: Connecting to remote service
V/FA: Activity paused, time: 27905355
V/FA: onActivityCreated
I/System.out: ----------------------------onStart--------------------------------41611463
----------------------------onResume--------------------------------41611463
V/FA: Connection attempt already in progress
V/FA: Activity resumed, time: 27905395
V/FA: Connection attempt already in progress
Connection attempt already in progress
D/FA: Connected to remote service
V/FA: Processing queued up service tasks: 4
I/System.out: ----------------------------onStop--------------------------------79732252
V/FA: Inactivity, disconnecting from the service
Запуск активности из MainActivity:
startActivity(new Intent(MainActivity.this, WorkerCabinetActivity.class));
finish();