#Androidのコールバック関数の秘密

2184 ワード

Androidを学ぶ過程で、「コールバック関数」という言葉によく遭遇しますが、何がコールバック関数なのでしょうか.簡単に言えば、コールバック関数はそのポインタで呼び出される関数で、彼女は自分のいるオブジェクトに呼び出されず、他人の方法を呼び出すときに逆に呼び出されるだけです.Androidプログラムはjavaプログラムで実現され、javaには針がないことはよく知られていますが、したがって、コールバックはインタフェースと抽象クラスによって実現される.コールバックの過程は簡単に理解できる.Aクラスに一つの方法が定義されている.この方法ではインタフェースとそのインタフェースの抽象方法が用いられているが、抽象方法には具体的な実現がなく、Bクラスが実現する必要がある.Bクラスがこの方法を実現した後、それ自体はこの方法を呼び出すのではなく、Aクラスに伝達される.A類の呼び出しに供する.このようなメカニズムをコールバックと呼ぶ.コールバックメカニズムは機能と定義を分離する手段であり,市一中松結合の設計思想である.次にコードを通じて分析を行い,具体的には以下の通りである.
  • (1).コールバックインタフェースICallBack
  • を定義する.
        //      
        public interface ICallBack{
           void postExec();
        }
    
  • (2).実装クラスFooBar
  • を定義する.
        public void class  
    {
        private ICallBack callback;
        public void setCallBack(ICallBack callBack){
           this.callBack = callback;
        }
        public void doSth(){
           callBack.postExec();
        }
        public static void main(String args[]){
           FootBar foo = new FootBar();
           foo.setCallBack(new ICallBack(){
             public void postExec(){
               Log.i("info","method executed!");
             }
           });
           foo.doSth();
        }
    }
    

    上記コードにおいて、第1セグメントのコードは、1つのICallBackパラメータを受け入れるpostExec()メソッドを有するコールバックインタフェースICallBackを定義し、その後doSth()メソッドで呼び出す、これがポストコールバック関数の基本的な使い方である.
    Androidの開発では、関数の使用が非常に広範であることがわかります.以下に、2つのコールバック関数の使用シーンを列挙し、コールバック関数がどのように使用されているかをより直感的に見ることができます.
    シーン1を適用すると、イベントリスナーのコールバック
        Button button = (Button)findViewById(R.id.button);
    button.setOnClickListener(new Button.OnclickListener(){
        //    
        @override
        public void onClick(View view){
          //doSomeThing...
        }
    });
    
    

    上のコードはボタンにイベントリスナーを追加し、自分では表示されないonClick()メソッドを呼び出します.ユーザがこのボタンのクリックイベントを出発すると、Androidシステムによって自動的に呼び出される.
    適用シーン2:Activityライフサイクルのコールバック
        @override
    public void onCreate(Bundle saveInstanceState){
       super.oncreate(saveInstanceState);
       ...
    }
    
    @override
    public void onResume(){
       super.onResume();
       ...
    }
    
    

    上のコードはActivityを作成する時、システムが持っているonCreate()の方法で、この方法は呼び出されないと思われますが、Androidシステムのプロセスの中で自動的に呼び出されます.はい、これはAndroidの中のコールバック関数についての紹介です.私のところは寺が小さくて、大神を入れることができなくて、好きではありません.