Irgendwas ganz Elementares scheint mir nicht klar zu sein

  • 6 Antworten
  • Letztes Antwortdatum
ui_3k1

ui_3k1

Gesperrt
197
Hallo,

ich habe zwei Fragen zum allgemeinen Aufbau von einer Activity...

Irgendwie fehlt mir extrem der Überblick, wie ich Funktionen und Klassen sinnvoll aufteilen kann. Was mir aber nur in der Android-Entwicklung so geht. Keine Ahnung warum, aber mein Code umfasst immer mehrere Bildschirmseiten und sobald ich versuche ihn aufzuräumen komme ich an den Punkt, dass nichts mehr funktioniert.

Die zweite Sache ist:
Ich möchte zwei "Abläufe" gleichzeitig laufen lassen und bekomme es einfach nicht auf die Reihe. Zum Einen gehts darum einen Sensor ab zu fragen und zum Anderen in der gleichen Activity einen Button zu haben, mit dem man Eingaben tätigen kann.
-> wie bekomme ich den Button implementiert, ohne dass sich die Activity aufhängt?

Besten Dank vorab!
 
Zum Überlick:
Viel mir Anfangs auch schwer. Es ist nicht das "Klassische" OOP.
mein Code umfasst immer mehrere Bildschirmseiten
Allerdings sehe ich hier nun keinen "Fehler" :) Ich meine Klassen die nur ~70 Zeilen haben aber es im package trillionen an Datein gibt, ist auch nicht sinnvoll...

Du brauchst ein AsyncTask. Multithreading auch genannt ;)
Der Task läuft dann schön im Hintergrund (und arbeitet was ab) während dein GUI-Thread weiter bedienbar ist.

Gruß
 
  • Danke
Reaktionen: ui_3k1
Okay, dann bin ich schon mal beruhigt.

Allerdings habe ich für mein Problem auch nach stundenlangem (besser "tagelangem") Recherchieren keine Lösung gefunden. Die meisten Codebeispiele, die ich bis jetzt gesehen habe, haben einen Thread um Daten zu laden.
Aber in meinem Fall besteht derzeit nicht mal ein Thread. Ich aktualisiere den Sensor in der Fktn. "onSensorChanged" und dort spielt sich praktisch auch meine ganze Logik ab: wie zB Zeitmessung und auch die Darstellung des Views. Ist es sinnvoller die Daten aus dieser Funktion irgendwie zu extrahieren und in einer anderen Funktion zu verarbeiten?

Keine Ahnung.. Entweder bin ich total panne, setze mir gleich zu beginn total überdimensionierte Ziele, oder die Fachliteratur ist einfach nur mies. Kann doch nicht sein, dass man so "wild herumprobieren" muss...

oO okay... scheint funktioniert zu haben^^ Teste jetzt mal und werde dann nochmal eine kurze Rückmeldung geben. :)
 
Zuletzt bearbeitet:
Ähm, weiß jetzzt nicht was du schon geänder hast, aber ja. Am besten ist es, wenn du die komplette Logic ect. in ein AsyncTask schiebst.

Gruß
 
Also ich benutze immer den klassischen Thread (My Class extends Thread) und übergebe der Klasse dann den Handler.
Der Handler wird in deiner Activity-Klasse implementiert und da fängst du dann die verschiedenen Messages ab und kannst deine UI-Elemente oder alles mögliche aktualisieren. Quasi ähnlich wie in Swing mit Thread und Listener.

AsyncTask les ich jedes mal, mag mich aber an das Konzept einfach nicht gewöhnen, ich komme mit Handler einfach besser klar.

Desweiteren werden AsyncTask gar nicht wirklich immer empfohlen (siehe letzter Beitrag und weiterführender Link):
android - Handler vs AsyncTask - Stack Overflow
 
Ich finde, dass für eine "WorldLoop" der AsyncTask nicht so wirklich geeignet ist. Der ist eher für einen Job mit endlicher Dauer (wie einen HttpRequest abarbeiten) und einem definierten Ende. Für andauernde Prozesse würde ich mit eigenem Thread/Runnable + Handler arbeiten.
 
Ok, dann so :)
Hatte noch nie mit Sensoren gearbeitet und halt für Task immer AsynctTask benutzt. Deshalb der Vorschlag :)

Gruß
 
Zurück
Oben Unten