1. ホーム
  2. java

[解決済み] Androidのコールバックとは何ですか?重複

2022-02-24 01:31:48

質問

コールバックの概念を理解したいのですが。コールバックについてインターネットで検索したところ、インターフェイスを使った例がたくさんあり、あるクラスがそのインターフェイスを使って別のクラスのメソッドを呼び出していることがわかりました。しかし、私はまだコールバックの主要な概念を得ることができない、コールバックを使用しての目的は何ですか?

どのように解決するのですか?

ここで、素敵な チュートリアル コールバックとその使用例についてよく説明しています。

コールバックのコンセプトは、他のクラスで何らかの作業が行われた場合に、同期/非同期のクラスに通知することです。これをHollywoodの原則と呼ぶ人もいる: "Don't call us we call you".

以下はその例です。

class A implements ICallback {
     MyObject o;
     B b = new B(this, someParameter);

     @Override
     public void callback(MyObject o){
           this.o = o;
     }
}

class B {
     ICallback ic;
     B(ICallback ic, someParameter){
         this.ic = ic;
     }

    new Thread(new Runnable(){
         public void run(){
             // some calculation
             ic.callback(myObject)
         }
    }).start(); 
}

interface ICallback{
    public void callback(MyObject o);
}

クラスAはクラスBを呼び出して、スレッドで何らかの作業をさせます。スレッドが作業を終えると、コールバックを介してクラスAに通知し、結果を提供します。だからポーリングとか必要ない。結果が出ればすぐに取得できます。

Androidでは、コールバックはアクティビティとフラグメントの間などで使用されます。フラグメントはモジュール化されている必要があるので、フラグメントの中でコールバックを定義して、Activityのメソッドを呼び出すことができます。