Android 지식 포인트 요약(13)Handler, Looper 메시지 대기열 모델, 각 부분의 역할
5382 단어 andriod
Android 지식 포인트 요약(목차)https://blog.csdn.net/a136447572/article/details/81027701、
Handler는 당신에게 메시지와 Runnable 대상을 보내고 처리할 수 있습니다.각 Handler 객체는 Thread 및
Thread 메시지 대기열Handler를 만들 때 Thread 메시지 대기열과 연결되면 됩니다.
메시지와runnable 대상을 메시지 대기열에 전달하고 메시지를 실행한 후 메시지 대기열에서 종료합니다.
Handler의 역할은 메시지와runnable 대상이 실행되는 것을 조정하는 것이다.동작을 다른 라인에서 실행시키다.
프로그램에서 프로세스가 생성되었을 때, 주 루틴은 메시지 대기열 (messageQueue) 을 실행합니다.
맨 윗부분의 응용 프로그램과 관련된 대상, 예를 들어activity,broadcastReceiver,windows 등은 당신을 만들 수 있습니다.
의 Thread, 메인 라인과 상호작용을 하는Handler를 통해 상호작용을 하는 방법은post나sendMessage를 통해 하는 것이다.
그러나 새로운 라인에서 주어진 메시지나 Runnable는 적당한 시기에 스케줄링되고 처리됩니다.
(즉, 즉각 처리되지 않는 막힘식).
루틴에서 looper가 전송되지 않음
handler.sendEmptyMessage(0x11);//
Message msg = new Message();
Bundle bundle = new Bundle();
bundle.putString("key","value");
msg.setData(bundle);
msg.what = 0x12 ;
handler.sendMessage(msg); //
Handler 정의
Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0x11){
Log.i("info"," ");
}
if (msg.what == 0x12){
Bundle bundle = msg.getData();
String value = bundle.getString("key");
Log.i("info","value="+value );
}
}
};
Thread와HandlerThread의 차이
Thread에 looper Handler Thread가 없습니다. 시스템에서 기본적으로 Looper를 만들면Handler를 통해 메시지를 전달할 수 있습니다.
하위 스레드를 만드는 Handler
HandlerThread handlerThread = new HandlerThread("HandlerThread");
handlerThread.start();
Handler mHandler = new Handler(handlerThread.getLooper()){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what==0x11){
new Timer().schedule(new TimerTask() {
@Override
public void run() {
ss++;
// Handler
Message msgd = new Message();
Bundle bundle = new Bundle();
bundle.putString("key",""+ss);
msgd.setData(bundle);
msgd.what = 0x12 ;
zHandler.sendMessage(msgd);
}
}, 1000,1000);
}
}
};
mHandler.sendEmptyMessage(0x11);
주 스레드의Handler
Handler zHandler = new Handler(){
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
if (msg.what == 0x12){
Bundle bundle = msg.getData();
String value = bundle.getString("key");
text1.setText(value+"");
}
}
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 지식 포인트 요약(13)Handler, Looper 메시지 대기열 모델, 각 부분의 역할관련 기사: Android 지식 포인트 요약(목차)https://blog.csdn.net/a136447572/article/details/81027701、 Handler는 당신에게 메시지와 Runnable 대상을 보...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.