こんにちは、Android開発初心者です。
現在、Androidアプリでサービスを動かし処理を実行し続ける部分を実装しています。
そこでコールバックを受け取るクラス(仮にクラスAとします)へabstract interfaceをimplementsさせ、クラスAへの参照保持しコールバックしていたのですが、アプリキル時にそのクラスAへの参照が消えてしまいコールバックできない問題に当たりました。
解決法として、リスナークラスへBroadcastReceiverをextendsし、クラスAへの参照を持たずともコールバックする方法とクラスAへの参照をWeakReferenceで保持する方法を考えています。
そこで、この2つの方法の問題点があれば教えていただきたいのと、他にもっとうまい方法があれば実装方法も含めご教授いただければと思います。
よろしくお願いします。

一応考えている方法のコードを記載します。

方法1

public class A extends B {
    @Override
    public void onB(String name) {
        // 以下、Push通知を行う
    }
}
public adstract class B extends BroadcastReceiver {

    @Override
    public void onReceiver(Context context, Intent intent) {

        Bundle extra = intetn.getExtras();
        String name = extras.getString("key");
        onC(name);
    }

    public abstract void onB(String name);
}

方法2

public class A implements B {

    @Override
    public void onB(String name) {
        // 以下、Push通知を行う
    }

}

public adstract interface B {

    public abstract void onB(String name);

}

public class C {

    private A mClassA;

    public static void b(String name) {

        mClassA.onB(name);

    }

}