| |||||||
Das Thema "ImageView Bitmap alle 30 Sek. ersetzten" befindet sich unter Android App Entwicklung auf Android-Hilfe.de.
|
| | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Junior Mitglied Registriert seit: 24.11.2011
Beiträge: 31
Abgegebene Danke: 4
Erhielt 2 Danke für 2 Beiträge
| 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 (permalink) |
| Android Experte Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
|
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.
__________________ Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon. Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten. Tipp: Zum "Danke" sagen gibt es einen Button. ![]() |
| | |
| Folgender Benutzer bedankt sich bei DieGoldeneMitte für diesen Beitrag: | Andr_green (24.11.2011) |
| | #3 (permalink) |
| Junior Mitglied Registriert seit: 24.11.2011
Beiträge: 31
Abgegebene Danke: 4
Erhielt 2 Danke für 2 Beiträge
|
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 (permalink) |
| Erfahrener Benutzer Modell: HTC Magic, Flytouch 2, Motorola Flipout, SE Xperia X10i, HTC Desire Z, SE Xperia Play, SE Mini Pro Registriert seit: 12.01.2010
Beiträge: 255
Abgegebene Danke: 16
Erhielt 41 Danke für 39 Beiträge
|
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 ...
__________________ Meine Apps ... |
| | |
| Folgender Benutzer bedankt sich bei miha für diesen Beitrag: | Andr_green (25.11.2011) |
| | #5 (permalink) |
| Junior Mitglied Registriert seit: 24.11.2011
Beiträge: 31
Abgegebene Danke: 4
Erhielt 2 Danke für 2 Beiträge
|
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 (permalink) |
| Fortgeschrittenes Mitglied Modell: HTC Sensation Registriert seit: 31.08.2011
Beiträge: 390
Abgegebene Danke: 25
Erhielt 59 Danke für 57 Beiträge
|
Kannst auch nen klassischen Thread nehmen und benutzt dann runOnUIThread, um das Bild zu setzen.
|
| | |
| | #7 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 14.08.2009
Beiträge: 354
Abgegebene Danke: 23
Erhielt 49 Danke für 43 Beiträge
|
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
__________________ http://android.fungamer.net/ |
| | |
| | #8 (permalink) | |
| Android Experte Registriert seit: 05.02.2010
Beiträge: 609
Abgegebene Danke: 75
Erhielt 136 Danke für 119 Beiträge
| Zitat:
Und den Thread muss man dann im onResume() dann neu starten. AsyncTask doku gibts hier: http://developer.android.com/guide/t...d-threads.html
__________________ Kein Support via PN/eMail. Bitte das Forum benutzen - dort haben alle etwas davon. Bei Entwicklerfragen zu abstürzenden Apps bitte immer die Ausgabe von LogCat posten. Tipp: Zum "Danke" sagen gibt es einen Button. ![]() | |
| | |
| | #9 (permalink) |
| Fortgeschrittenes Mitglied Registriert seit: 14.08.2009
Beiträge: 354
Abgegebene Danke: 23
Erhielt 49 Danke für 43 Beiträge
|
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
__________________ http://android.fungamer.net/ |
| | |
| | #10 (permalink) |
| Android Guru Registriert seit: 09.05.2009
Beiträge: 2.389
Abgegebene Danke: 36
Erhielt 307 Danke für 289 Beiträge
|
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.
__________________ App Entwicklung Latest apps: Media Streamer BETA | DailyCash | MoneyManager ( PRO | HD ) |
| | |
![]() |
|
| Themen-Optionen | |
| Ansicht | |
| |
| ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Facebook für Android -< Passwordeingabe alle 10 Sek. erforderlich | dAwdAw | Kommunikation | 3 | 10.09.2011 16:31 |
| Splash-Image ersetzten mit Linux | morgon | Root / Hacking / Modding für HTC Desire HD | 2 | 06.04.2011 13:08 |
| Bitmap-Dimension und ImageView | mago | Android App Entwicklung | 0 | 08.05.2010 23:56 |
| 2.0 Apps durch 2.1 ersetzten? | Toorop | Root / Hacking / Modding für Motorola Milestone | 1 | 19.01.2010 20:33 |
| T-Mobile G1 Logo ersetzten? | ThRiLL_KiLL | Root / Hacking / Modding für T-Mobile G1 | 8 | 28.11.2009 17:38 |