Thread вместо Handler?
Добрый день. Таймер был создан с помощью Thread. При повороте экрана он не сбрасывается. Почему так происходит? Ведь активность должна удалятся? Из-за того что Thread это не главный поток? Верно ли такое решение или нужно использовать только Handler
package com.example.timer;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
private TextView textViewTimer;
private int seconds = 0;
private int minutes = 0;
private int hours = 0;
private boolean timerIsRun = false;
private Thread timer = new Thread();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textViewTimer = findViewById(R.id.textViewtimer);
textViewTimer.setText(String.format("%d:%02d:%02d", hours, minutes, seconds));
}
public void onClickStartTimer(View view) {
if (timerIsRun){
timer.interrupt();
seconds = 0;
minutes = 0;
hours = 0;
timerIsRun = false;
timer = onThreading();
} else if (!timerIsRun){
timer = onThreading();
}
timer.start();
}
public void onClickStopTimer(View view) {
timerIsRun = false;
timer.interrupt();
}
public void onClickResetTimer(View view) {
timerIsRun = false;
onReseting();
timer.interrupt();
}
public void onReseting(){
seconds = 0;
minutes = 0;
hours = 0;
textViewTimer.setText(String.format("%d:%02d:%02d", hours, minutes, seconds));
}
public Thread onThreading(){
Thread timerThread = new Thread(new Runnable() {
@Override
public void run() {
timerIsRun = true;
try {
while (timerIsRun) {
while (seconds <= 60 && timerIsRun) {
textViewTimer.setText(String.format("%d:%02d:%02d", hours, minutes, seconds));
seconds++;
Thread.sleep(1000);
}
if (timerIsRun){
seconds = 0;
minutes++;
if (minutes == 60) {
minutes = 0;
hours++;
}
}
}
} catch (Exception e) {}
}
});
return timerThread;
}
}