안 드 로 이 드 의 인터페이스 리 셋 메커니즘 을 깊이 이해 하 다.
5608 단어 android인터페이스 리 턴 메커니즘
인터페이스 리 셋 은 등록 후 바로 실행 되 지 않 고 특정한 시기 에 실행 된다 는 뜻 이다.
우선 무엇이 반전 인지 해결 하 라.
예 를 들 어 어느 날,내 가 너 에 게 전 화 를 걸 어 문 제 를 물 었 다.물론 어 려 운 문제 이다.너 는 잠시 해결 방법 이 생각 나 지 않 았 다.나 는 전 화 를 들 고 거기서 바보 같이 기다 릴 수도 없 었 다.그래서 우 리 는 약속 했다.네가 방법 을 생각해 낸 후에 핸드폰 으로 나 에 게 알려 주면 나 는 전 화 를 끊 고 다른 일 을 할 것 이다.XX 분 이 지나 자 내 핸드폰 이 울 렸 다.너 는 신 이 나 서 문제 가 이미 해결 되 었 으 니 이렇게 처리 해 야 한다 고 말 했다.
C 는 스스로 b 를 호출 하지 않 고 C 가 b 를 제공 하 는 목적 은 S 로 하여 금 그것 을 호출 하 게 하 는 것 이 며 C 는 어 쩔 수 없 이 제공 해 야 한다.S 는 C 가 제공 하 는 b 가 무엇 인지 모 르 기 때문에 S 는 b 의 인터페이스 규범(함수 원형)을 약정 한 다음 에 C 가 S 의 한 함수 r 를 통 해 S 자신 에 게 b 함수(즉 등록)를 사용 하 겠 다 고 알려 준다.r 는 등록 함수 입 니 다.
쉽게 말 하면 리 셋 함 수 는 시스템 에 호출 된 함수 이 고 우 리 는 이 함수 가 호출 되 는 시 기 를 알 고 있 습 니 다.그러면 우 리 는 위의 그림 을 계속 보완 합 니 다.
이 그림 을 보면 사실 우 리 는 돌 이 켜 보면 생활 속 곳곳에 이런 사상 이 존재 한 다 는 것 을 알 게 될 것 이다.소프트웨어 의 많은 사상 은 사실 우리 의 실제 생활 에서 사고방식 의 전환 일 뿐이다.
우리 가 평소에 시험 문 제 를 푸 는 첫 번 째 일 은 무엇 입 니까?네,학교 번호 와 이름 을 쓰 세 요.여기 서 우리 가 학 번 과 성명 을 작성 하 는 것 은 자신 에 게 보 여 주 는 것 이 아니 라 선생님 께 점 수 를 등록 할 때 보 여 주 는 것 이다(시스템 에 나중에 호출 할 것 을 미리 남 겨 두 는 것).이것 은 바로 반전 응용 이다.선생님 께 서 인 터 페 이 스 를 제공 하 십 니 다.우 리 는 인 터 페 이 스 를 이용 하여 등록 합 니 다.
위의 작은 예 시 를 보고 여러분 들 은 반전 에 대해 조금 알 게 되 었 습 니 다.우 리 는 다시 문장 이 처음 시작 한 예 로 돌아 갑 니 다.
그 예 는'비동기+반전'의 프로 그래 밍 모델 을 설명 했다.그 중에서 네가 나중에 휴대 전화 로 나 에 게 결 과 를 알려 주 는 것 은 바로'반전'과정 이다.나의 휴대 전화 번 호 는 반드시 이전에 너 에 게 알려 줘 야 한다.이것 이 바로 등록 반전 함수 이다.나의 휴대 전화 번 호 는 반드시 유효 하고 휴대 전화 가 너의 호출 을 받 을 수 있어 야 한다.이것 은 리 셋 함수 가 반드시 인터페이스 규범 에 부합 해 야 한다.
우 리 는 리 셋 의 기본 절 차 를 대충 알 고 있 습 니 다.다음은 안 드 로 이 드 에서 리 셋 의 기본 사용 을 살 펴 보 겠 습 니 다.
필드 1:
Button button = (Button)this.findViewById(R.id.button);
button.setOnClickListener(newButton.OnClickListener() {
//
@override
publicvoidonClick(View v) {
buttonTextView.setText(" ");
}
});
위의 코드 는 버튼 에 이벤트 모니터 를 추 가 했 는데 이것 은 바로'리 셋'에서 가장 흔히 볼 수 있 는 응용 장면 중 하나 이다.우 리 는 스스로 onClick 방법 을 명시 적 으로 호출 하지 않 을 것 이다.사용자 가 이 단추 의 클릭 이 벤트 를 터치 하면 Android 시스템 에서 자동 으로 호출 됩 니 다.장면 2:
@Override
publicvoidonCreate(BundlesaveInstanceState) {
super.onCreate(saveInstanceState);
// You code...
}
@Override
publicvoidonResume() {
super.onResume();
// You code...
}
Activity 의 전체 생명 주 기 는 기본적으로 리 턴 함수 가 역할 을 발휘 하고 있다 고 말한다.우리 가 자주 사용 하 는 리 셋 방식 두 가 지 를 보 았 습 니 다.우 리 는 먼저 안 드 로 이 드 가 리 셋 을 이용 하 는 기본 적 인 방법 을 정리 하 겠 습 니 다.사실은 우리 의 그 그림 을 번역 한 것 뿐이다.
--너 류-
package lin.callback.test;
public class You implements Runnable{
private String who;
private ContactInterface callBack;
public You() {
// TODO Auto-generated constructor stub
}
// ,
public void setCallBack(String who,String question,ContactInterface callBack) {
this.who = who;
System.out.println(" : "+who+", "+question);
this.callBack =callBack;
}
public void handleThings(){
// ,
for(int i=0;i<100000;i++){
if(i == 0){
System.out.println(" .....");
}
}
String answer = " A";
//
System.out.println(" : , "+who+" ");
callBack.callBackByTel(answer);
}
/* (non-Javadoc)
* @see java.lang.Runnable#run()
*/
@Override
public void run() {
try {
Thread.sleep(1000);
handleThings();
} catch (Exception e) {
e.printStackTrace();
}
}
}
--우리 류-
public class Me {
public static void main(String[] args){
Me me = new Me();
me.hasQuestion();
}
private void hasQuestion(){
// ,
You you = new You();
you.setCallBack(" ", " ?", new ContactInterface() {
@Override
public void callBackByTel(String answer) {
System.out.println(" : , , :"+answer+", ");
}
});
// ,
new Thread(you).start();
}
}
--인터페이스 클래스(규범)--
public interface ContactInterface {
public void callBackByTel(String answer);
}
인증 결과:지금 저 에 게 연락 한 사람 은 달팽이 입 니 다.문 제 는 어떤 문제 의 답 이 무엇 입 니까?
너 는 지금 문 제 를 생각 하고 있다.
문제 가 생각 났 으 니 달팽이 에 게 전 화 를 걸 어 답 을 알려 주 려 고 한다.
네,알 겠 습 니 다.답 을 받 았 습 니 다.답 은 A 입 니 다.감사합니다.
반전 에 대한 깊 은 사고:
프로그램의 본질은 바로 코드 전환 이다.동기 비동기 반사 인터페이스 가상 함수 와 상 관 없 이 본질 적 으로 함수 호출 이다.함수 가 우리 가 그것 을 호출 하려 면 그것 의 지침 이 필요 하 다.서로 다른 언어 는 서로 다른 방식 으로 이 지침 을 얻 을 수 있다.그리고 우리 가 정의 하 는 인 터 페 이 스 는 함수 포인터 입 니 다.그러면 그 등록 과정 은 바로 그 함수 포인터 에 대한 할당 에 해당 합 니 다.이 함수 포인터 로 우리 가 정의 한 자체 실현 함 수 를 호출 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.