Androidアプリケーション開発では、多くの場所でCallBack
という単語を頻繁に使用します。技術的に説明することの意味と、どのように使用できるかを知りたいです。アプリケーションではcallback
。それを理解して使用するためのガイドが必要です。
それが何を意味するのか知りたいのですが、技術的に教えてください
http://en.wikipedia.org/wiki/Callback_%28computer_science%29
「Javaなどの関数値引数のないオブジェクト指向プログラミング言語では、[コールバック]は、抽象クラスまたはインターフェイスを渡すことでシミュレートできます。受信者は1つ以上のメソッドを呼び出し、呼び出し側は具体的な実装を提供します。 。このようなオブジェクトは、事実上、コールバックのバンドルに加えて、操作する必要のあるデータです。これらは、Visitor、Observer、Strategyなどのさまざまな設計パターンを実装するのに役立ちます。」
アプリケーションのコールバックを管理する方法
これが何を意味するのかわかりません。
うーん。例はどうですか。クイックソートアルゴリズムをCで記述します。アルゴリズムを使用するユーザーは、ユーザーがアルゴリズムでソートしているものに適した比較メソッドを提供する必要があります。ユーザーは、ユーザーのcompareメソッドへの関数ポインターをクイックソートコードに渡す必要があります。クイックソートコードは、このアドレス、関数ポインターを使用して、ユーザーの比較関数にコールバックします。ソートされているものの通常性を判断する方法がわからない可能性があるため、実装ではなく関数プロトタイプを提供します。ユーザーは、ユーザーが何をソートしているかに意味のある比較の実装を提供します。この実装は、関数プロトタイプと一致する必要があります。関数ポインタは、クイックソートアルゴリズムによって使用され、ユーザーのコードに戻ってタッチします。
これは実際にはポリモーフィズムについてです。
Javaでは、インターフェースを使用してこれを行うことができます。したがって、ソートについては、インターフェースIComparerおよびIComparableを参照してください。
Callableインターフェースを使用して、Runnableと同じようにコードを実行できます。ただし、Callableは結果を返すことができ、checked例外をスローできます。
詳細については。 http://developer.Android.com/reference/Java/util/concurrent/Callable.html
Callableインターフェイスを使用すると、関数として引数を渡すことができます。理解するために簡単なコードスニペットを追加しました。
public class MainActivity<V> extends Activity {
Callable<String> doLogin=null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
doLogin=new Callable<String>() { //created but not called now.
@Override
public String call() throws Exception {
//make some piece of code
return "something"; //or false
}
};
CheckSession checkSession=new CheckSession("sessionName");
String sessionKey="";
try { //we are sending callable to the DAO or any class we want
sessionKey=checkSession.getSessionKey(doLogin);
} catch (Exception e) {
e.printStackTrace();
}
}
}
public class CheckSession{
String sessionName="";
Callable<String> func=null;
public CheckSession(String sessionName) {
super();
this.sessionName = sessionName;
}
public String getSessionKey(Callable<String> doLogin) throws Exception{
func=doLogin;
return (String) func.call();
}
}