2011-01-07 23 views
0

Ich habe versucht, herauszufinden, wie alle Threads gestoppt werden, wenn meine Anwendung pausiert (wenn die Home-Taste gedrückt wird) und ich es einfach nicht herausfinden kann.Wie stellen Sie sicher, dass alle Threads bei Anwendungspausen pausieren?

Hier ist, was ich habe: eine Hauptaktivität, die einen Tab-Host enthält, hat jeder Tab-Host eine Liste, wenn ein Element in den Listen angeklickt wird, wird eine neue Aktivität mit Details gestartet. Jede Liste befindet sich in einer eigenen Aktivität, die einen Updater-Thread startet, der sicherstellt, dass der Listeninhalt immer auf dem neuesten Stand ist.

Hier ist, was ich versucht habe: Ich habe versucht mit den onPause(), onResume(), onStop() und onDestroy() Ereignisse. Das Problem ist, dass, wenn ich entweder die Hauptaktivität der Aktivität verwende, die eine Liste für diese Ereignisse überwacht, sie jedes Mal aufgerufen werden, wenn ein Element aus der Liste angeklickt wird, sowie wenn die Schaltfläche "Home" tatsächlich gedrückt wird Es gibt also keine Möglichkeit, zwischen den Situationen zu unterscheiden.

Fehle ich etwas? Wie wird das normalerweise gemacht?

Antwort

2

Dies ist ein ziemlich gutes Indiz dafür, dass Ihr Design fehlerhaft ist. Sie sollten niemals Fäden herumliegen lassen, die Sie nicht erklären können oder die sich nicht selbst erledigen.

Jede Liste ist innerhalb seiner eigenen Tätigkeit , die einen Aktualisierungs Thread beginnt, dass sicher Inhalt der Liste macht, ist immer auf dem neuesten Stand

Diese Art der Sache sollte in einem Service durchgeführt werden.

bekommen sie jedes Mal ein Element aus der Liste genannt

geklickt wird

Dies ist, wie diese Ereignisse arbeiten. Sobald Ihre Aktivität nicht mehr sichtbar ist (dh Ihre neue Aktivität kommt vor), geht sie zu onPause() und möglicherweise onStop(). Sie müssen dies berücksichtigen. Sie können es nicht bekämpfen oder umgehen.

+0

Ok, nach etwas mehr lesen auf Activity Life Cycle und Services habe ich ein paar Dinge herausgefunden: 1. Sie haben Recht sowohl über einen Service und das Anrufen von Veranstaltungen zu Aktivitäten und 2. selbst wenn ich einen Service nutze ich noch Ich sehe keine Möglichkeit, den Dienst zu beenden oder zu lösen, wenn die Schaltfläche "Home" gedrückt wird ... –

Verwandte Themen