Android_Handler의 HandlerMessage 방법
2900 단어 교육 노트
핸들러 메커니즘에 대해 나는 이렇게 이해한다.하위 스레드를 통해 UI 인터페이스를 수정하려면 이때handler를 빌려야만 이 기능을 실현할 수 있다.handler는 하위 스레드와 메인 스레드를 연결하는 다리다.
package com.example.handlerdemo1;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.*;
public class MainActivity extends Activity {
TextView text;
int num=0;
Handler handler=new Handler(){
public void handleMessage(android.os.Message msg) {
text.setText(""+msg.obj);
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
text=(TextView) findViewById(R.id.textView1);
new Thread(){
public void run() {
while(true){
num++;
Message message=new Message();
message.obj="hahahahhaha"+num;
handler.sendMessage(message);
}
};
}.start();
}
}
이 예와 이전 예의 사고방식은 많지 않다. 여기에 익명 내부 클래스를 사용했다.
메시지 대상도 실례화 없이 시스템의 메시지 대상을 직접 호출하면 된다.
Message message=handler.obtainMessage();
message.sendToTarget()
방법과 handler.sendMessage()
의 역할은 같다. sendToTarget
방법의 원본 코드를 보면 알 수 있다.