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