2016-06-30 14 views
-3

Ich weiß, wir können Services und IntentServices verwenden, aber ich habe die Anforderung, dass eine Klasse läuft und nie entfernt wird, aber Garbage Collector.
Um mehr von dem Grund zu beschreiben: Ich benutze ein Ereignissystem.
Wenn also eine Aktivität oder ein Service ein Ereignis auslöst, fängt die zentrale Ereignisklasse dieses Ereignis ab und macht alles Notwendige.
Wie kann ich eine Klasse erstellen, um diese Aufgabe zu erfüllen? Ich kenne die Klasse, die Application erweitert und zu manifest ist ein Weg hinzugefügt.
Aber ich suche nach einem besseren Weg.Android Halten Sie einen Prozess im Hintergrund laufen

+0

Implementieren Sie einen 'BroadCastReceiver', um diese Aufgabe auszuführen. –

+0

Danke für Downvotes für legitime Fragen, ernsthaft. – Mehrdad

Antwort

0

Aber ich habe Anforderung, dass eine Klasse läuft und niemals entfernt wird, sondern Garbage Collector.

Wenn Sie allgemein nach "Klasse" fragen, können Sie eine static Variable verwenden. Es wird niemals Müll gesammelt, es sei denn, Sie weisen ihm null zu, da ein Klassenobjekt einen starken Verweis darauf enthält.

Wenn also eine Aktivität oder ein Service ein Ereignis auslöst, fängt die zentrale Ereignisklasse dieses Ereignis ab und führt alle erforderlichen Aktionen aus.

Verwenden Sie hierfür eine Komponente BroadcastReceiver. Es wurde genau für diesen Zweck entworfen.

Ich sehe nicht, wie Ihre erste Frage mit der zweiten Frage verwandt ist. Ich nehme an, Sie möchten, dass Ihr Empfänger immer mit Ereignissen umgeht. Registrieren Sie es in diesem Fall einfach unter AndroidManifest.xml, damit es jedes Mal ausgeführt wird, wenn ein Ereignis eintritt.

+0

Ich benutze EventBus bereits, keine Notwendigkeit für "BroadCastReceiver". Meine Frage ist: Wenn ich eine Klasse mit dem Namen '' EventHandler'' erstelle und eine statische Variable zu einer Klasse hinzufüge, die '' Application'' erweitert, wird diese Klasse niemals als Garbage Collection behandelt. – Mehrdad

+0

Korrigieren. Es wird nur dann Müll gesammelt, wenn der App-Prozess vollständig beendet ist. –

+0

tnx, die genaue Antwort suche ich. – Mehrdad

Verwandte Themen