ベンダ提供のライブラリを介してサードパーティのハードウェアを接続するAndroidアプリケーションがあります。ハードウェアからのデータが処理可能な状態になると、ライブラリはアプリケーションにコールバックします。Androidで複数のコールバックを処理するためのコールバックハンドラを作成する
サードパーティのライブラリは、設計上、アプリケーションに対して1つのコールバックしか作成しません。しかし、私のアプリケーションには、コールバックが呼び出されたとき(例えば、ロギング、UI表示の更新、外部プログラムの呼び出しなど)に行ういくつかの異なる非同期タスクがあります。イベントをさまざまな方法でファンアウトしようとしています。
呼び出すための単一の方法のために働くだろうinterface MyCallback {
public void doSomething(ArrayList<DataClass>);
}
public class MyApp extends Application {
...
private MyCallback cb;
public void registerCallback (MyCallback callback) {
cb = callback;
}
public methodCalledBy3rdPartyAPIOnData (ArrayList<DataClass> data){
cb.doSomething(ArrayList<DataClass> data);
}
が、私は、コールバックのシリーズのためにこれを行う方法の問題を抱えている..:だから、私は私のApplicationクラスでこれを行うことを考えていますそれらが非同期に呼び出されるようにします。 Androidアプリケーションや一般的なJavaでこのようなことをするための例やベストプラクティスはありますか?
Observerは良好ですが、unregisterObserverがありません。 OPの通知クラスが「滞在する」(例えば、シングルトン)と、複数のオブザーバがアクティビティのインスタンスの非静的メンバーである場合、これは望ましい場合があります。アクティビティーの存続期間を超えるシングルトン内にビュー全体を保持するなど、漏洩を避けるために、アクティビティーはlisten onPauseなどの登録を解除する必要があります。 – Tom
@Tomあなたは正しいですが、私は裸を最小限に抑えたいと思っていました。しかし、それを言及している必要があります。 –
これは正しいオプションだと思います。 – Tom