Unterschied zwischen zwei Funktionen / warum laggt es?

R

Ronschk

Neues Mitglied
0
Hallo zusammen,
ich habe in meiner App nach einem Vorbild aus dem Internet eine Animation implementiert. Diese besteht aus zwei Funktionen, welche ich gerne zu einer zusammenfassen will. Das klappt soweit auch, allerdings laggt die Animation wenn ich meine Methode aufrufe (die Implementierung mit zwei Funktionen tut es nicht).
Das hier sind die beiden Funktionen
Code:
public void animateCircleMovement(final long duration) {

  // ...

  post(new Runnable() {
    @Override
    public void run() {
        animateStep();
    }
 });
}

public void animateStep() {

   // ...

  invalidate();
  if(curTime<endTime) {
    post(new Runnable() {
      @Override
      public void run() {
        animateStep();
      }
     });
  }
}
Das ist die einzelne
Code:
// ...
new Thread(new Runnable() {
  @Override
  public void run() {

  while(currTime<endTime){

  // ...

   postInvalidate();
 }
}).start();
Die Berechnung die zwischendrin gemacht werden sind ziemlich einfach und einander sehr ähnlich. Das sollte also mMn nicht zum lag führen.
Hat jemand ne Ahnung woran es liegt?

Danke :)
 
1. Code : Auf dem UI thread und blockt ihn einzig für das Zeichnen(rekursiv ncoh dazu!!!!)
2. Code : ausserhalb des UI Thread, zeitpunkt des neuzeichnens nicht bestimmbar
 
Danke für die schnelle Antwort.
Deiner Antwort entnehme ich, dass die zweite Methode wahrscheinlich grunsätzlich besser ist. Nur wie kann ich das Problem mit dem Laggen beheben? Also wie kann ich ein Neuzeichnen erzwingen?
 
Okay, habe ne Lösung gefunden: Es hilft zwischendurch (z.B. vor dem jeweiligen postInvalidate()) Thread.Sleep(10) aufzurufen, damit läuft es komplett flüssig
 
Views gefällt es nicht so oft invalidate zu bekommen und deswegen stoppt es einige und fährt einen Gang langsamer (meine was von 100ms gelesen zu haben)

Beim ersten hatte es gar keine Chance etwas anderes zu machen da es nur für deine Zeichen aufrufe geblockt war beim zweiten konnte es sich jedoch entscheiden ob sie deine Methode ausführt oder nicht :)
 

Ähnliche Themen

S
Antworten
3
Aufrufe
640
swa00
swa00
M
Antworten
3
Aufrufe
212
moin
M
OnkelLon
Antworten
7
Aufrufe
1.231
thomaspan
thomaspan
Zurück
Oben Unten