android 응용 프로그램 개발에서 자주 단어 CallBack
을 여러 곳에서 읽습니다. 기술적으로 우리에게 말해주는 것이 무엇을 의미하는지, 그리고 응용 프로그램에서 callback
을 어떻게 사용할 수 있는지 알고 싶습니다. 그것을 이해하고 사용하기위한 안내서가 필요합니다.android의 콜백?
답변
은 내가 [콜백] 할 수있는, 우리에게 자바와 같은 기능 값 인수없이 객체 지향 프로그래밍 언어에서 기술적으로
http://en.wikipedia.org/wiki/Callback_%28computer_science%29
을 " 을, 그것이 무슨 뜻인지 말하고 싶어 호출 측이 구체적인 구현을 제공하는 동안 수신자가 하나 이상의 메소드를 호출하는 추상 클래스 나 인터페이스를 전달하여 시뮬레이션 할 수 있습니다. 이러한 객체는 사실상 콜백 번들과 조작해야하는 데이터입니다. 다양한 디자인 구현에 옵저버 (Observer), 전략 (Strategy) "과 같은 패턴을 포함한다. 내가 응용 프로그램의 콜백을 관리 할 수있는 방법
는나는 이것이 무엇을 의미하는지 모른다.
흠. 어때? C에서 퀵 소트 알고리즘을 작성합니다. 알고리즘을 사용하려는 사용자는 사용자가 알고리즘으로 정렬하는 것에 적합한 비교 메소드를 제공해야합니다. 사용자는 quicksort 코드에 대한 사용자의 비교 메서드에 대한 함수 포인터를 전달해야합니다. quicksort 코드는이 주소 인 함수 포인터를 사용하여 사용자의 비교 함수를 호출합니다. 정렬되는 항목의 순서를 결정하는 방법을 알 수 없기 때문에 함수 원형, 구현이 제공되지 않습니다. 사용자는 사용자가 정렬중인 내용에 맞는 compare 구현을 제공합니다. 이 구현은 함수 프로토 타입과 일치해야합니다. 함수 포인터는 quicksort 알고리즘에 의해 사용되어 사용자의 코드에 다시 접근합니다.
이것은 실제로 다형성에 관한 것입니다.
자바에서는 인터페이스를 사용하여이를 수행 할 수 있습니다. 따라서 정렬을 위해 IComparer 및 IComparable 인터페이스를 참조하십시오.
호출 가능 인터페이스를 사용하여 Runnable처럼 코드를 실행할 수 있습니다. 그러나 Callable은 결과를 반환 할 수 있으며 예외 검사를 던질 수 있습니다.
자세한 내용은 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();
}
}
죄송합니다. 다시 한번 최악의 영어 마크입니다. 어쨌든 옳은 것을 한 것입니다. – Praveen
명확한 설명 –