1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

ImageView Bitmap alle 30 Sek. ersetzten

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Andr_green, 24.11.2011.

  1. Andr_green, 24.11.2011 #1
    Andr_green

    Andr_green Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    2
    Registriert seit:
    24.11.2011
    Hallo,

    ich bin neu und habe mich eben schon mal ein bichen hier um geschaut. Sieht sehr schön hier aus.
    Leider habe ich nur keine Antwort auf die Frage gefunden die mich zurzeit wurmt:

    Ich habe ein ImageView und das zeiAbstand von ungefähr 30 Sekunden
    durch einen Satz von 7 Bildern rotiert werden und dann wieder vorne angefangen werden?
    Anders gesagt alle 30 Sekunden soll das momentane Bild durch ein anderes ersetzt werden.
    Da das nicht die Hauptaufgabe der App ist, sollen alle anderen Funktionen weiterhin zu Verfügung stehen.

    Wie macht man das am besten ?
    AsyncTask, Thread oder wie?

    Danke für jede Hilfe.

    LG
     
  2. DieGoldeneMitte, 24.11.2011 #2
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Ja, AsyncTask ist die Google empfohlene Methode. Du machst in doInBackground() deine Schleife und übergibst dort per publishProgress() die nötigen Infos an onProgressUpdate(), wo du dann die gewünschte Bitmap renderst.

    Man kann das auch mit Thread machen, aber dann muss man sich selbst darum kümmern, dass der Updates des Views im UI Thread erfolgt. Ist auch keine Hexerei. Es gibt 1000 Threads hier, die die Details erklären.
     
    Andr_green bedankt sich.
  3. Andr_green, 24.11.2011 #3
    Andr_green

    Andr_green Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    2
    Registriert seit:
    24.11.2011
    tut mir leid aber irgendwie stehe ich auf dem Schlauch.
    Gibt es ein gute Tutorial für AsyncTasks?
    Das ultimative habe ich leider noch nicht gefunden, so das ich das wirklich komplett verstehe.

    Lg
     
  4. miha, 24.11.2011 #4
    miha

    miha Fortgeschrittenes Mitglied

    Beiträge:
    294
    Erhaltene Danke:
    43
    Registriert seit:
    12.01.2010
    Wenn du einfach nur 7 Bilder hast mach ein Runnable das immer wieder in 7 Sekunden drankommt und setz dann das Bild. Von Download hast du ja nichts geschrieben ...
     
    Andr_green bedankt sich.
  5. Andr_green, 25.11.2011 #5
    Andr_green

    Andr_green Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    2
    Registriert seit:
    24.11.2011
    runnable, wäre ein Thread und du meinst den nach dem das Bild geändert wurde ein sleep über einen Zeitraum X und dann wieder ändern ??
    wie ist das wenn ich die activity gewechselt wird und irgendwann wieder zurück auf die gewechselt wird? den start des threads in onResume setzen??
    Danke
     
  6. Tom299, 25.11.2011 #6
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    Kannst auch nen klassischen Thread nehmen und benutzt dann runOnUIThread, um das Bild zu setzen.
     
  7. MichaelS, 25.11.2011 #7
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    Dein Problem ist an sich, dass du aufwendige Sachen niemals im UI-Thread machen darfst. Das bedeutet, die UI läuft in einem eigenem Thread damit diese auf alles Zugriff hat und sonst nichts anderes macht. Wenn du da natürlich aufwendige Sachen machst, steht der Thread und deine UI auch und sobald das passiert. Merkt es Android und will deine App schließen.

    Deswegen musst du aufwendige Sachen in einen anderen Thread auslagern, dass die UI nicht blockiert wird. Jedoch kannst du nicht von Thread auf Elemente von einem anderen Thread zugreifen. Deswegen kannst du nicht einfach nen Thread starten, Bild downloaden und dann direkt in der UI anzeigen.

    Das bedeutet, dass du eine art Message schreiben musst wo du drin stehen hast, was passieren soll und womit was passieren soll. Diese Message bekommt der UI Thread und kann dem entsprechend reagieren.

    Ich an deiner Stelle würde ein AsyncTask nehmen für den Anfang, da dieser das mit dem Message an anderen Thread bereits für dich regelt :)

    Gruß
    Michael
     
  8. DieGoldeneMitte, 25.11.2011 #8
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Richtig, das sind typische Tücken, die es bei Threads (und afaik auch bei AsyncTask) zu bedenken gilt. Das würde man typischerweise so lösen, dass man in seinen onPause ein Flag setzt, dass die Schleife im Thread dann nach dem sleep beendet.

    Und den Thread muss man dann im onResume() dann neu starten.

    AsyncTask doku gibts hier: http://developer.android.com/guide/topics/fundamentals/processes-and-threads.html
     
  9. MichaelS, 25.11.2011 #9
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    Ansich kannst du eine private Variable setzen. Ob dieser Thread laufen soll oder nicht. In deinem neuen Thread machst du eine Schleife solange deine private variable auf true ist soll er laufen. Sobald onPause aufgerufen wird, änderst du diese Variable und dein Thread hört auf und wird beendet. Bei onResume setzt du deine private variable wieder auf true und startest dein thread wieder :)

    Gruß
    Michi
     
  10. swordi, 25.11.2011 #10
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hmm für diesen fall hier ist ein asynctask wohl nicht geeignet.

    er hat 7 bilder, im abstand von 30 sekunden wird jeweils 1 angezeigt.

    was soll er da mit einem asynctask? der läuft ja nur einmal durch.

    ein handler wäre wohl hier am besten.

    einfach postdelayedmessage alle 30 sek aufrufen lassen und das bild setzen.
     
  11. miha, 25.11.2011 #11
    miha

    miha Fortgeschrittenes Mitglied

    Beiträge:
    294
    Erhaltene Danke:
    43
    Registriert seit:
    12.01.2010
    Runnable ist an sich kein anderer Thread. Du kannst da auch einen Thread starten der die Aufgabe erledigt.

    Du müsstest jetzt mal sagen ob die Bilder schon geladen sind wenn du sie anzeigen willst oder ob du sie dann erst laden musst ... schon geladene Bilder kannst du locker auch im UI Thread wechseln und brauchst keine Asynctasks oder Threads. Wie swordi schon schrieb und was ich auch oben meinte: Handler ... postdelayed ... Runnable sind die Stichworte.

    Lies mal hier wenn du Bilder nachladen willst: Android Developers Blog: Painless threading
     
  12. MichaelS, 25.11.2011 #12
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
    Ich vermute, dass er die Bilder auch Downloaden möchte :) Ohne Download macht der Thread natürlich kein Sinn :)
     
  13. swordi, 25.11.2011 #13
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    davon steht nichts hier und ich würde mal sagen er will die bilder mit aus liefern.

    hmm vielleicht macht endlich mal einer ne schöne "tittenbilder"-app. glaub davon gibts noch keine im market :D
     
  14. Andr_green, 25.11.2011 #14
    Andr_green

    Andr_green Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    2
    Registriert seit:
    24.11.2011
    Hallo,

    also die Bilder sind schon vorhanden, müssen daher nicht geladen werden.
    und NEIN, es wird keine App wie swordi vermutet.
    Ich werde mir mal den angegebenen Link genauer anschauen und mich ggf. noch mal melden.

    Vieln Dank für die vielen Antworten.
     
  15. MichaelS, 25.11.2011 #15
    MichaelS

    MichaelS Fortgeschrittenes Mitglied

    Beiträge:
    370
    Erhaltene Danke:
    51
    Registriert seit:
    14.08.2009
  16. Tom299, 25.11.2011 #16
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    also wenns keine Titten-App wird geb ich jetzt keine Hilfe mehr :flapper:
     
    swordi bedankt sich.
  17. swordi, 25.11.2011 #17
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    ja sehr schade. es gibt einfach zu viele seriöse entwickler im market :D
     
  18. Andr_green, 25.11.2011 #18
    Andr_green

    Andr_green Threadstarter Junior Mitglied

    Beiträge:
    40
    Erhaltene Danke:
    2
    Registriert seit:
    24.11.2011
    naja so schwer dürfte es für euch doch auch nicht sein eine solche App zu entwickeln oder seit ihr auch zu seriös :lol:
     
  19. Tom299, 25.11.2011 #19
    Tom299

    Tom299 Android-Experte

    Beiträge:
    602
    Erhaltene Danke:
    120
    Registriert seit:
    31.08.2011
    uns fehlen die Models (ich meine jetzt nicht die DB-Models) :razz:
     
  20. swordi, 25.11.2011 #20
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hehe die ironie nicht erkannt?

    der market ist überschwemmt von apps, die bildchen zeigen, egal welcher art. ich schätze mal 99% davon haben keine rechte an den bildern, die sie da so zeigen.
     

Diese Seite empfehlen