1つ。概要、例
CallBack とはコールバックの意味です。「コールバック関数」または「コールバックメソッド」はソフトウェアの設計と開発において非常に重要な概念です。「コールバック関数」の概念をマスターすることは、(どの言語を使用するかに関係なく) プログラマにとって非常に必要です。
コールバック関数とは何ですか? コールバック関数はシステムコール用に予約されている関数であり、関数がいつ呼び出されるのかがわかります。ここで注意すべき点が 2 つあります: 1 つ目は、作成したコールバック関数は自分自身で呼び出されるのではなく、将来のある時点でシステムによって呼び出されることです; 2 つ目は、システムがどのような状況でコールバック関数を呼び出すかを知っておく必要があります。コールバック関数を作成します。
実際の「コールバック関数」の例を挙げると、試験で質問に答えるときに最初に行うことは何でしょうか? そうです、学校番号と名前を書きましょう。ここで、入力する生徒番号と名前は私たち自身のためのものではなく (つまり、このメソッドは私たち自身のために呼び出されるわけではありません)、教師がスコアを登録するときに確認できるようにするためのものであることに注意してください (システムによる将来の呼び出しのために予約されています)。コールバックアプリケーション。
Android で「コールバック」が適用されるシナリオを見てみましょう。
シーン 1:
<span style="font-family:Times New Roman;">Button button = (Button)this.findViewById(R.id.button);
button.setOnClickListener(new Button.OnClickListener() {
//回调函数 @override
publicvoid onClick(View v) {
buttonTextView.setText("按钮被点击了");
}
});</span>
上記のコードはボタンにイベント リスナーを追加します。これは実際には「コールバック」の最も一般的なアプリケーション シナリオの 1 つです。onClick メソッドを自分自身で明示的に呼び出すことはありません。ユーザーがボタンのクリック イベントをトリガーすると、Android システムによって自動的に呼び出されます。
シーン 2:
<span style="font-family:Times New Roman;">@Override
publicvoid onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
// You code...}
@Override
publicvoid onResume() {
super.onResume();
// You code...}</span>
上記のメソッドは誰にとっても馴染みのあるものです。これは、Android システムによって Activity クラスに設定されるコールバック関数です。Activity ライフ サイクルのさまざまな段階で、Android システムは対応するメソッド (onCreate、onPause、onResume、onDestroy) を自動的に呼び出します。 、など)
上記は、Android で「コールバック」が使用される 2 つのシナリオです。コードの実装は異なる場合がありますが、アイデアは似ており、すべて「コールバック」のアイデアを具体化したものです。以下では、これら 2 つのシナリオを Java でシミュレートします。
まず、イベント リスナーの登録をシミュレートします。まずリスナーインターフェイスを作成します
<span style="font-family:Times New Roman;">package com.listener;
/**
* 点击监听器接口
*
*/publicinterface MyOnClickListener {
publicvoid onClick();
}</span>
次に、独自の Button クラスを作成します。
<span style="font-family:Times New Roman;">package com.listener;
publicclass MyButton {
private MyOnClickListener listener;
/**
* 设置具体点击监听器
* @param listener 点击监听器实现类
*/
publicvoid setOnClickListener(MyOnClickListener listener) {
this.listener = listener;
}
/**
* 按钮被点击
*/
publicvoid doClick() {
listener.onClick();
}
}</span>
最後に、クライアントの登録済みリスナーをシミュレートし、クリック操作をトリガーします。
<span style="font-family:Times New Roman;">package com.listener;
publicclass Client {
publicstaticvoid main(String[] args) {
MyButton button =new MyButton();
//注册监听器
button.setOnClickListener(new MyOnClickListener() {
@Override
publicvoid onClick() {
System.out.println("按钮被点击了");
}
});
//模拟用户点击
button.doClick();
}
}</span>
上記は Android のイベント監視における「コールバック」のアイデアの応用ですが、2 番目のシナリオ、つまりアクティビティのライフサイクル メソッド呼び出しにおける「コールバック」の具体化をシミュレートしてみましょう。比較的簡単なので説明は省略しますが、コードを見てみましょう。
<span style="font-family:Times New Roman;">package com.activity;
public abstract class Activity {
protectedvoid onCreate() {
System.out.println("创建准备~~~~~~~");
}
protectedvoid onDestroy() {
System.out.println("销毁准备~~~~~~~~");
}
}</span>
<span style="font-family:Times New Roman;">
package com.activity;
publicclass ConcreteActivity extends Activity {
@Override
protectedvoid onCreate() {
super.onCreate();
System.out.println("创建中!!!");
}
@Override
protectedvoid onDestroy() {
super.onDestroy();
System.out.println("销毁中!!!");
}
}</span>
<span style="font-family:Times New Roman;">
package com.activity;
publicclass Client {
publicstaticvoid main(String[] args) {
Activity activity =new ConcreteActivity();
activity.onCreate();
activity.onDestroy();
}
}</span>
二。参考URL
1. http://xixinfei.iteye.com/blog/1306236