안 드 로 이 드 의 인터페이스 리 셋 메커니즘 을 깊이 이해 하 다.

처음에 이 메커니즘 에 대한 이해 가 깊 지 않 았 는데 지금 은 생각 을 다시 정리 하 자.개발 중 에 인터페이스 리 셋 은 우리 가 자주 사용 하 는 것 이다.
인터페이스 리 셋 은 등록 후 바로 실행 되 지 않 고 특정한 시기 에 실행 된다 는 뜻 이다.
우선 무엇이 반전 인지 해결 하 라.
예 를 들 어 어느 날,내 가 너 에 게 전 화 를 걸 어 문 제 를 물 었 다.물론 어 려 운 문제 이다.너 는 잠시 해결 방법 이 생각 나 지 않 았 다.나 는 전 화 를 들 고 거기서 바보 같이 기다 릴 수도 없 었 다.그래서 우 리 는 약속 했다.네가 방법 을 생각해 낸 후에 핸드폰 으로 나 에 게 알려 주면 나 는 전 화 를 끊 고 다른 일 을 할 것 이다.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 입 니 다.감사합니다.
반전 에 대한 깊 은 사고:
프로그램의 본질은 바로 코드 전환 이다.동기 비동기 반사 인터페이스 가상 함수 와 상 관 없 이 본질 적 으로 함수 호출 이다.함수 가 우리 가 그것 을 호출 하려 면 그것 의 지침 이 필요 하 다.서로 다른 언어 는 서로 다른 방식 으로 이 지침 을 얻 을 수 있다.그리고 우리 가 정의 하 는 인 터 페 이 스 는 함수 포인터 입 니 다.그러면 그 등록 과정 은 바로 그 함수 포인터 에 대한 할당 에 해당 합 니 다.이 함수 포인터 로 우리 가 정의 한 자체 실현 함 수 를 호출 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기