Here, in this answerActivity
인스턴스는 WeakReference<Activity>
변수에 저장됩니다. 그래서 그것은 메모리 누수 을 피할 수 있습니다. 그렇게하는 것이 좋은 습관입니까?WeakReference에서 활동 인스턴스를 저장하는 것이 좋습니다.
public class BackgroundService extends IntentService {
private static WeakReference<Activity> mActivityRef;
public static void updateActivity(Activity activity) {
mActivityRef = new WeakReference<>(activity);
}
}
나는 mActivityRef.get()
를 사용하여 필요한 활동 객체에 캐스팅하고 있습니다. 해당 객체를 사용하여 활동의 메소드에 액세스합니다.
목적은이 코드 작업을 수행하지만 의견에 따라 나는 그것을 사용하거나 아직 명확 document을하지 언급 한하지
여부를 혼란 스러워요, 서비스에서 활동 방법에 액세스 할 수 있습니다.
[LocalBroadcastManager] (https://stackoverflow.com/a/25172526/2820534)를 구현했지만 작업을 수행하고 있지만이 방송을 신뢰할 수 있습니까? 항상 해결 될 것인가 ?? – Prabs
@Prabs : "이 방송을 신뢰하십시오"또는 "항상 언급 될 것"이라는 것이 무슨 뜻인지 모르겠습니다. 정의에 따라 이벤트에 등록 된 것이 없을 수 있습니다. 그러나이 경우 서비스에서 정보를 찾아서 다른 단계를 수행 할 수 있습니다. 예를 들어 로컬 브로드 캐스트를 보낼 수 있으며, 이벤트를 포착하는 전경 UI가없는 경우 서비스는 대신 '알림'을 발생시킬 수 있습니다. [이 샘플 앱] (https://github.com/commonsguy/cw-omnibus/tree/v8.5/EventBus/LocalBroadcastManager)을 참조하십시오. – CommonsWare