큐 원형은 messageQueue.java로 보임.
/*package*/ ActivityThread mMainThread;
ActivityThread.java가 있음.
getMainLooper() 했을 때 ActivityThread를 받아오는 것 같음.
camera.java에 보면
373 라인에 private void addIdleHandler() {
MessageQueue queue = getMainLooper().myQueue();
가 있음.
메인 쓰레드의 queue 정보를 가지고 오는 것 같음.
public final void addIdleHandler(IdleHandler handler) {
if (handler == null) {
throw new NullPointerException("Can't add a null IdleHandler");
}
synchronized (this) {
mIdleHandlers.add(handler);
}
}
다른 곳에서 찾은 messageQueue의 흔적들...
-------------------------
public static final MessageQueue myQueue() {
return myLooper().mQueue;
}
-------------------------
public class DeferredHandler {
private LinkedList<Runnable> mQueue = new LinkedList();
private MessageQueue mMessageQueue = Looper.myQueue();
private Impl mHandler = new Impl();
-------------------------
public boolean sendMessageAtTime(Message msg, long uptimeMillis)
{
boolean sent = false;
MessageQueue queue = mQueue;
if (queue != null) {
msg.target = this;
sent = queue.enqueueMessage(msg, uptimeMillis);
}
else {
RuntimeException e = new RuntimeException(
this + " sendMessageAtTime() called with no mQueue");
Log.w("Looper", e.getMessage(), e);
}
return sent;
}
-------------------------
public final boolean sendMessageAtFrontOfQueue(Message msg)
{
boolean sent = false;
MessageQueue queue = mQueue;
if (queue != null) {
msg.target = this;
sent = queue.enqueueMessage(msg, 0);
}
else {
RuntimeException e = new RuntimeException(
this + " sendMessageAtTime() called with no mQueue");
Log.w("Looper", e.getMessage(), e);
}
return sent;
}
-------------------------
final MessageQueue mQueue;
-------------------------
public void startBindingAppWidgetsWhenIdle() {
// Ask for notification when message queue becomes idle
final MessageQueue messageQueue = Looper.myQueue();
messageQueue.addIdleHandler(new MessageQueue.IdleHandler() {
public boolean queueIdle() {
// Queue is idle, so start binding items
startBindingAppWidgets();
return false;
}
});
}
-------------------------
private MessageQueue mMessageQueue = null;
-------------------------
mQueue = mLooper.mQueue;
-------------------------
mLooper = Looper.myLooper();
-------------------------
public static final MessageQueue myQueue() {
return myLooper().mQueue;
}
-------------------------
public static final Looper myLooper() {
return (Looper)sThreadLocal.get();
}
-----------------------
private static final ThreadLocal sThreadLocal = new ThreadLocal();
-----------------------------
ThreadLocal을 부르는 녀석들을 검색해서 엑셀로 하나만 뽑아보면
ActivityManagerService.java
ActivityThread.java
CDDownloadHttpClient.java
DateUtils.java
debug.h
execution.h
Executors.java
FocusFinder.java
IIORegistry.java
InheritableThreadLocal.java
LastControl.java
LogRecord.java
LogRecordTest.java
Looper.java
Platform.java
ReentrantReadWriteLock.java
regexp-stack.h
sitemap.txt
SQLiteContentProvider.java
Thread.java
ThreadLocal.java
ThreadLocalCache.java
ThreadLocalTest.java
View.java
ViewRoot.java
XMLReaderManager.java
에서 불린다. 즉 해당 모듈들은 localThread를 이용하고 있다고 볼 수 있다.
그 중에 그래도 눈에 좀 익은 ActivityManagerService.java, ActivityThread.java
가 주요한 Thread로 보인다.
모든 view에서 상속하고 있으니까느.
이제 프레임 워크 관련 책을 볼 때이다.
2011년 3월 24일 목요일
피드 구독하기:
댓글 (Atom)
UPBIT is a South Korean company, and people died of suicide cause of coin investment.
UPBIT is a South Korean company, and people died of suicide cause of coin. The company helps the people who control the market price manipu...
-
프루나는 이제 믿을만한 공유가 안되고 있다. 젠장. 영화 다운 받아보면 전부 야동이나 포르노류 밖에는 없다. 신고되어 있는 자료부터 보지만 신고가 안되어 있는 것은 제대로 다운도 되지 않는다. 이젠 유료 사이트를 믿을 수 밖엔... ...
-
Intel의 새로운 MMX - "KNI" KNI 는 Katmai New Instruction 의 약자이다 . 아는 분들은 잘 알고있겠지만 KATMAI( 이하 카트마이로 부름 ) 는 인텔의 다음번 펜티엄...
-
C:\program files\ 베이비론 폴더가 있다. 브라우저 창 다닫고 지우고 다시 실행하면 없어진다.
댓글 없음:
댓글 쓰기
국정원의 댓글 공작을 지탄합니다.