2010-12-13 3 views
1

Nach dem Lesen von Brad Fitzpatrick article auf StrictMode bin ich mit ein paar Fragen übrig.Doing File I/O auf Android - Welcher Thread gehört es auf

Wo gehört Datei-E/A in meine Anwendungen? (Ich weiß, der UI-Thread ist falsch, aber könnte einen neuen Thread laichen schlechter sein?)

Wenn ich einen Thread für den Zugriff auf Datenträger verwenden sollte, wie sollte dann meine Anwendung die Implementierung handhaben? Parameter an eine AsyncTask senden? Gemeinsame Variablen? Ich möchte nicht nur die Speicherauslastung, sondern auch die Reaktionsfähigkeit optimieren (vor allem, da es auf meinen Handys keinen merklichen Unterschied gibt)

@Brad wenn Sie dies lesen: Ich würde einen Blogeintrag mit Beispielen (oder Links zu Orten in der aoS-Quelle), wo dies in den Gerüsten gemacht wurde.

Danke allen!

Antwort

4

Mach dir keine Sorgen über Gewinde. Das Starten eines neuen Threads ist schneller als die Festplatte. Auf einem Nexus One, IIRC, Erstellen neuer Threads & starten sie in einer Schleife ist ~ 1 ms.

Verwenden Sie, was für Ihre Anwendung am besten geeignet ist: AsyncTask, IntentService oder ein neuer Thread mit gemeinsamem Status (mit entsprechenden Sperren!). Eine AsyncTask läuft garantiert weiter, wenn der Benutzer wegwechselt, ist aber etwas einfacher zu benutzen und bringt Sie zurück zum UI-Thread, wenn es fertig ist. Ein IntentService wird weiterhin ausgeführt und ausgeführt, hilft Ihnen jedoch nicht dabei, mit dem Ergebnis zum UI-Thread zurückzukehren. Sie müssen das Ergebnis (falls vorhanden) an einen Handler in Ihrem UInthread senden.

+1

Meinten Sie zu sagen, dass eine AsyncTask NICHT garantiert weiter läuft? –

+0

Danke für die Info Brad, irgendwelche besonderen Stellen im Rahmen, die zwischen Froyo und Lebkuchen optimiert wurden? – smith324

Verwandte Themen