android 의 반전 함수 의 의미
이 글 을 다 읽 고 나 서 여러분 들 은 이것 을 보 실 수 있 습 니 다.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()방법 을 리 셋 합 니 다.그리고 처리 메 시 지 는 모두 클래식 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Kotlin의 기초 - 2부지난 글에서는 Kotlin이 무엇인지, Kotlin의 특징, Kotlin에서 변수 및 데이터 유형을 선언하는 방법과 같은 Kotlin의 기본 개념에 대해 배웠습니다. 유형 변환은 데이터 변수의 한 유형을 다른 데이터...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.