#

Android crashes bei .setText in Timer run

 

 

Problem:

Android stürzt ab, wenn man versucht mit .setText einen Text in eine Anzeige Textview zu schrieben

 

Beschreibung:

Mit einem Timer soll jede Sekunde die aktuelle Uhrzeit in eine Android Activity Textfeld zur Anzeige geschrieben werden

 

Timer timerActualDayTime = new Timer();
timerActualDayTime.schedule(new TimerTask() {
@Override
public void run() {
       
String sCurrentDateTime= new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
       
_textViewCurrentDayTime.setText(sCurrentDateTime);
        }
        },
1000, 1000);
//textViewActualTime

 

 

An der gelben Stelle stürzt Android ab

 

Lösung:

Timer hat keinen Zugriff auf die UI

Wenn man vom java Code in die Ausgabe (UI) schreiben möchte, dann benötigt man höhere Rechte als ein Timer hat.

Hier muss man ein Handler nehmen.

Java Handler() ermöglichen den Zugriff auf andere Stellen wie zum Beispiel die Aus- Eingabe UI

 

Lösung: Wechsel auf Handler()

Ok Solution works

Lösungs Code

 

TextView _textViewCurrentDayTime;

@Override
protected void onCreate(Bundle savedInstanceState) {
   
super.onCreate(savedInstanceState);
    setContentView(
R.layout.activity_main);

   
//< init >
   
_textViewCurrentDayTime = findViewById(R.id.textViewCurrentDayTime);
    refreshCurrentDateTime();
   
//</ init >
}

//========< #region: Methods >========
private void refreshCurrentDateTime() {
   
new Handler().postDelayed(new Runnable() {
       
@Override
       
public void run() {
           
String sCurrentDateTime= new SimpleDateFormat("HH:mm:ss", Locale.getDefault()).format(new Date());
           
_textViewCurrentDayTime.setText(sCurrentDateTime);

           
//< loop: next >
           
refreshCurrentDateTime();
           
//< loop: next >
       
}
    },
1000);
}
//========</ #region: Methods >========

 

 

 

 

Mobile

.