Animationen mit postDelayed mit Android [] (Animationen mit postDelayed mit Android), Lektion, Seite 723372
https://www.purl.org/stefan_ram/pub/postdelayed_android (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram

Animationen mit »postDelayed« mit Android 

Das folgende Programmbeispiel zeigt wie ein Textfeld automatische jede Sekunde aktualisiert (hier: hochgezählt) werden kann.

Um eine Sekunde zu warten, sollte nicht »java.lang.Thread.sleep« verwendet werden, weil dies den gesamten Faden der Anwendung blockiert und dadurch zu Störungen führt.

Eine Animation ist aber möglich, indem eine Methode sich selber via »android.os.Handler#postDelayed« aufruft und so eine Schleife mit einer Pause von 1000 ms realisiert. In diesem Fall endet die Methode zunächst und der Thread kann andere Aufgaben erledigen. Nach 1000 ms wird das java.lang.Runnable-Objekt dann in eine Liste zu aktivierender Objekte eingetragen und so erneut gestartet. Da das Objekt dann erneut »android.os.Handler#postDelayed« aufruft, entsteht eine Endlosschleife.

Da es sich bei dieser Form des Selbstaufrufs nicht um eine speicherverzehrende Rekursion handelt, kann sie beliebig oft wiederholt werden.

MainActivity.java
package com.example;

public final class MainActivity extends android.app.Activity
{ final android.app.Activity activity = this;
final android.content.Context context = this; @java.lang.Override protected final void onCreate
( final android.os.Bundle bundle )
{ super.onCreate( bundle ); final android.widget.TextView textView
= new android.widget.TextView( MainActivity.this.context );
final java.lang.StringBuilder builder
= new java.lang.StringBuilder( 64 );
MainActivity.this.activity.setContentView( textView );
new java.lang.Runnable()
{ long i = 0;
final android.os.Handler handler = new android.os.Handler();
final java.lang.Runnable runnable = this;
@java.lang.Override public void run()
{ builder.setLength( 0 );
builder.append( i++ );
final java.lang.String string = builder.toString();
activity.setTitle( string );
textView.setText( string );
android.util.Log.i( string );
handler.postDelayed( this.runnable, 1000 ); }}.run(); }}

Zur Vereinfachung wurde in dem obigen Programm darauf verzichtet, die Endlosschleife beim Beenden der Aktivität zu beenden. Daher ist dieses Programm noch nicht richtig auf den Neustart der Aktivität bei weiterlaufender Anwendung vorbereitet, wie er etwa bei Ändern der Bildschirmorientierung erfolgt.

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram723372 stefan_ram:723372 Animationen mit postDelayed mit Android Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd723372, slrprddef723372, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/postdelayed_android