android 의 반전 함수 의 의미

12347 단어 android리 턴 함수
본문 은 xiaanming 의 블 로그(http://blog.csdn.net/xiaanming/article/details/17483273)
이 글 을 다 읽 고 나 서 여러분 들 은 이것 을 보 실 수 있 습 니 다.http://blog.csdn.net/jason0539/article/details/10168899 다른 편 은 이 걸 보면 더 이해 할 수 있 을 거 야!!
예전 에는 리 턴 이 무엇 인지 이해 하지 못 했 습 니 다.매일 다른 사람 에 게 리 턴 방법 을 추가 하 라 는 말 을 들 었 습 니 다.마음속 으로 내 가 풀 을 생각 하고 리 턴 방법 이 무엇 입 니까?그리고 스스로 인터넷 에서 찾 고 찾 고 찾 고 많이 찾 아 도 잘 모 르 겠 어 요.지금 알 겠 어 요.리 턴 이란 A 류 에서 B 류 중의 어떤 방법 C 를 호출 하 는 거 예요.그리고 B 류 에서 A 류 중의 방법 D,D 를 거꾸로 호출 하 는 방법 을 리 턴 방법 이 라 고 해 요.이렇게 말 하면 어 지 럽 지 않 아 요?사실은 저도 처음에 이렇게 이해 가 안 됐어 요.사람들 이 비교적 전형 적 이 라 고 말 하 는 리 턴 방식 을 보 았 다.
1.class A 구현 인터페이스 CallBack callback-배경 1 2.class A 에는 class B 의 참조 b 가 포함 되 어 있 습 니 다.배경 2.class B 는 callback 의 방법 f(CallBack callback)-배경 3 A 의 대상 a 가 B 를 호출 하 는 방법 f(CallBack callback)-A 류 가 B 류 를 호출 하 는 어떤 방법 C 가 있 습 니 다.그리고 b 는 f(CallBack callback)방법 에서 A 를 호출 할 수 있 습 니 다.B 클래스 에서 A 클래스 를 호출 하 는 어떤 방법 D
모두 가 전화 하 는 예 를 즐겨 사용 합 니 다.좋 습 니 다.시 대 를 따라 잡기 위해 저도 이 예 를 사용 하 겠 습 니 다.저 는 이 보 를 사용 하여 리 턴 을 하 는데 어느 날 왕 군 이 어 려 운 문 제 를 만 났 습 니 다.문 제 는'1+1=?'입 니 다.이 군 에 게 전 화 를 걸 어 물 었 다.이 군 은 단번에 모 르 고 왕 군 에 게 말 했다.내 가 하 던 일 을 끝내 면 답 을 생각해 보 자.왕 군 도 바보 같이 전 화 를 들 고 이 군의 답 을 기다 리 지 않 을 것 이다.그래서 왕 군 은 이 군 에 게'나 쇼핑 가 야 돼.답 을 알 면 나한 테 전화 해서 알려 줘.'라 고 말 했다.그래서 전 화 를 끊 고 자신의 일 을 했다.한 시간 이 지 났 다.이 군 은 왕 군 에 게 전 화 를 걸 어 답 이 2 라 고 말 했다.
/** *          * @author xiaanming * */  
public interface CallBack {  
    /** *                     ,        * @param result     */  
    public void solve(String result);  
}  
/** *       * @author xiaanming *          CallBack,   ----->    */  
public class Wang implements CallBack {  
    /** *         *    ----->    */  
    private Li li;   

    /** *        ,        * @param li */  
    public Wang(Li li){  
        this.li = li;  
    }  

    /** *                 * @param question          ,1 + 1 = ? */  
    public void askQuestion(final String question){  
        //           , 
        new Thread(new Runnable() {  
            @Override  
            public void run() {  
                /** *           ,          *      A   B   C */  
                li.executeMessage(Wang.this, question);   
            }  
        }).start();  

        //                   ,     
        play();  
    }  

    public void play(){  
        System.out.println("      ");  
    }  

    /** *                 ,             */  
    @Override  
    public void solve(String result) {  
        System.out.println("          --->" + result);  
    }  

}  
/** *         * @author xiaanming * */  
public class Li {  
    /** *    B     CallBack callBack f()---->    * @param callBack * @param question        */  
    public void executeMessage(CallBack callBack, String question){  
        System.out.println("      --->" + question);  

        //                 
        for(int i=0; i<10000;i++){  

        }  

        /** *                  2 */  
        String result = "   2";  

        /** *           ,         *      B      A   D */  
        callBack.solve(result);      
    }  
}  
/** *     * @author xiaanming * */  
public class Test {  
    public static void main(String[]args){  
        /** * new      */  
        Li li = new Li();  

        /** * new      */  
        Wang wang = new Wang(li);  

        /** *         */  
        wang.askQuestion("1 + 1 = ?");  
    }  
}  

위의 그 예 를 통 해 당신 은 리 셋 체 제 를 잘 모 르 지 않 습 니까?위 는 비동기 리 셋 입 니 다.동기 리 셋 을 보 겠 습 니 다.onClick()방법 은 이제 Android View 의 클릭 방법 인 onclick()을 분석 해 보 겠 습 니 다.우 리 는 onclick()이 반전 방법 이라는 것 을 알 고 있 습 니 다.사용자 가 View 를 클릭 하면 이 방법 을 실행 합 니 다.우 리 는 Button 으로 예 를 들 어 보 겠 습 니 다.
//   View        
/** * Interface definition for a callback to be invoked when a view is clicked. */  
public interface OnClickListener {  
    /** * Called when a view has been clicked. * * @param v The view that was clicked. */  
    void onClick(View v);  
}  
package com.example.demoactivity;  

import android.app.Activity;  
import android.os.Bundle;  
import android.view.View;  
import android.view.View.OnClickListener;  
import android.widget.Button;  
import android.widget.Toast;  

/** *       Class A * @author xiaanming *     OnClickListener  ---->    */  
public class MainActivity extends Activity implements OnClickListener{  
    /** * Class A   Class B   ----->    */  
    private Button button;  

    @Override  
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.activity_main);  
        button = (Button)findViewById(R.id.button1);  

        /** * Class A   View   , Button extends View----->A   B       C */  
        button.setOnClickListener(this);  
    }  

    /** *     Button        ,          *        Toast  OnClick */  
    @Override  
    public void onClick(View v) {  
        Toast.makeText(getApplication(), "OnClick", Toast.LENGTH_LONG).show();  
    }  

}  

다음은 View 류 의 setOnClickListener 방법 입 니 다.B 류 에 해당 합 니 다.핵심 코드 만 붙 입 니 다.
/** *   View    B  * @author xiaanming * */  
public class View implements Drawable.Callback, KeyEvent.Callback, AccessibilityEventSource {  
    /** * Listener used to dispatch click events. * This field should be made private, so it is hidden from the SDK. * {@hide} */  
    protected OnClickListener mOnClickListener;  

    /** * setOnClickListener()    OnClickListener  ------>    * Register a callback to be invoked when this view is clicked. If this view is not * clickable, it becomes clickable. * * @param l The callback that will run * * @see #setClickable(boolean) */  

    public void setOnClickListener(OnClickListener l) {  
        if (!isClickable()) {  
            setClickable(true);  
        }  
        mOnClickListener = l;  
    }  


    /** * Call this view's OnClickListener, if it is defined. * * @return True there was an assigned OnClickListener that was called, false * otherwise is returned. */  
    public boolean performClick() {  
        sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_CLICKED);  

        if (mOnClickListener != null) {  
            playSoundEffect(SoundEffectConstants.CLICK);  

            //        B   A      D,  D           
            mOnClickListener.onClick(this);  
            return true;  
        }  

        return false;  
    }  
}  

이 예 는 바로 안 드 로 이 드 의 전형 적 인 리 셋 메커니즘 입 니 다.이것 을 보고 리 셋 메커니즘 을 더욱 이해 하 셨 습 니까?스 레 드 run()도 리 셋 방법 입 니 다.Thread 의 start()방법 을 실행 하면 이 run()방법 을 리 셋 합 니 다.그리고 처리 메 시 지 는 모두 클래식 합 니 다.

좋은 웹페이지 즐겨찾기