Here, in this answerActivity
Instanz zu speichern, die in WeakReference<Activity>
Variable gespeichert wird. So wird es vermeiden Speicherlecks. Ist es eine gute Übung, dies zu tun?Ist es eine gute Praxis, die Aktivitätsinstanz in einer WeakReference
public class BackgroundService extends IntentService {
private static WeakReference<Activity> mActivityRef;
public static void updateActivity(Activity activity) {
mActivityRef = new WeakReference<>(activity);
}
}
Ich verwende mActivityRef.get()
und es erforderlich Aktivitätsobjekt Gießen. Mit diesem Objekt auf die Methoden in Aktivität zugreifen.
Der Zweck ist, Aktivität Methoden von Dienst zuzugreifen, dieser Code macht die Arbeit aber nach den Kommentaren Ich bin verwirrt, ob es zu benutzen oder nicht
Ich habe die document noch nicht klar bezeichnet.
Ich habe implementiert [LocalBroadcastManager] (https://Stackoverflow.com/a/25172526/2820534) es macht die Aufgabe, aber können wir dieser Sendung vertrauen? Wird das immer angesprochen ?? – Prabs
@ Prabs: Ich weiß nicht, was Sie mit "Vertrauen Sie dieser Sendung" oder "immer angesprochen werden". Per Definition ist möglicherweise nichts für ein Ereignis registriert. In diesem Fall kann der Dienst dies jedoch herausfinden und andere Schritte unternehmen. Sie können beispielsweise eine lokale Übertragung senden. Wenn Sie keine Vordergrundbenutzeroberfläche haben, die das Ereignis abruft, kann der Dienst stattdessen eine Benachrichtigung auslösen. Siehe [diese Beispielanwendung] (https://github.com/commonsguy/cw-omnibus/tree/v8.5/EventBus/LocalBroadcastManager). – CommonsWare