Handler で Service を作成していますが、いくつかの Service メソッドを使用するには Handler が必要です。Handler は である必要があるためstatic
、Handler で Service 参照なしで Service メソッドにアクセスできます。
だから私はこのようにしました:
private static class ServiceHandler extends Handler {
MyService service;
public ServiceHandler(MyService service) {
this.service = service;
}
@Override
public void handleMessage(Message msg) {
...
}
}
しかし、これが仕事をする正しい方法であることもわかりました:
private static class ServiceHandler extends Handler {
private final WeakReference<MyService> mMyService;
public ServiceHandler(MyService service) {
mMyService = new WeakReference<MyService>(service);
}
@Override
public void handleMessage(Message msg) {
MyService service = mMyService.get();
...
}
}
Handler で Service を使用するこの 2 つの方法の違いは何ですか?