非原創
packagecom.android.messageexample;
import
importandroid.content.context;
importandroid.graphics.color;
importandroid.os.bundle;
importandroid.os.handler;
importandroid.os.looper;
importandroid.os.message;
importandroid.util.log;
importandroid.view.view;
importandroid.view.view.onclicklistener;
importandroid.widget.button;
importandroid.widget.linearlayout;
importandroid.widget.textview;
public
classmessageexampleextendsactivityimplementsonclicklistener
//implement the onclicklistener inte***ce
@override
public
voidonclick(view v)
break;
case
106:
finish();
break;
}
}
classeventhandlerextendshandler
publiceventhandler()
public
voidhandlemessage(message msg)
}
}
//nolooperthread
classnolooperthreadextendsthread
else
mnolooperthreadhandler.removemessages(0
);
if(false== postrunnable)else
});
}
}
}
//ownlooperthread has his own message queue by execute looper.prepare();
classownlooperthreadextendsthread
else
mownlooperthreadhandler.removemessages(0
);
//給自己傳送訊息
message m = mownlooperthreadhandler.obtainmessage(3
, 1, 1
, obj);
mownlooperthreadhandler.sendmessage(m);
looper.loop();
}
}
//receivemessagethread has his own message queue by execute looper.prepare();
classreceivemessagethreadextendsthread
};
looper.loop();
}
}
}
使用looper.mylooper靜態方法可以取得當前執行緒的looper物件。
使用mhandler = new eevnthandler(looper.mylooper()); 可建立用來處理當前執行緒的handler物件;其中,eevnthandler是handler的子類。
使用mhandler = new eevnthandler(looper.getmainlooper()); 可建立用來處理main執行緒的handler物件;其中,eevnthandler是handler的子類。
Android 基於Message的程序間通訊
例項在最後,先簡析原理。1 服務端重要 解析 nullable override public ibinder onbind intent intent getbinder裡面是這樣的 public ibinder getbinder mtarget是什麼?怎麼來的?public messenger...
Message解析流程
message的解析作為乙個共同元件。對應不同格式的msg檔案有不同的實現類來解析。用saxparser.1 final class messageresourcemanager 在start方法中呼叫 啟動載入 messageresourcemanager.load saxmessageresou...
Message和obtainMessage的區別
具體可參考 儘管message的構造器是公開的,但是獲取message物件的最好方法是呼叫message.obtain 或者handler.obtainmessage 這樣是從乙個可 物件池中獲取message物件。這樣就避免了過分new出乙個個message物件造成記憶體開銷。使用 使用new m...