有人可以向我解釋如何使用switch
和what
字段來確定要執行的代碼。 另外如何創建消息obj在交換機中使用也會很好。我的處理程序代碼你如何使用消息類中的什麼字段?
例子:
Handler uiHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
}
}
};
有人可以向我解釋如何使用switch
和what
字段來確定要執行的代碼。 另外如何創建消息obj在交換機中使用也會很好。我的處理程序代碼你如何使用消息類中的什麼字段?
例子:
Handler uiHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
}
}
};
如果您正在使用處理程序,我假設你想要做在不同的線程一些工作,並使用處理器B通信/ W,你是線程開始和主線程。看看下面的例子:
private static final int SUCCESS = 0;
private static final int FAIL = 1;
//This is the handler
Handler uiHandler = new Handler(){
@Override
public void handleMessage(Message msg){
//Here is how you use switch statement
switch(msg.what){
case SUCCESS:
//Do something
break;
case FAIL:
//Do something
break;
}
}
};
//Here is an example how you might call it
Thread t = new Thread() {
@Override
public void run(){
doSomeWork();
if(succeed){
/*we can't update the UI from here so we'll signal our handler
and it will do it for us.*/
// 'sendEmptyMessage(what)' sends a Message containing only the 'what' value.
uiHandler.sendEmptyMessage(SUCCESS);
}else{
uiHandler.sendEmptyMessage(FAIL);
}
}
}
幸得這兩個線程:他們可能是一個良好的閱讀: Android: When should I use a Handler() and when should I use a Thread? & Android Handler actions not being processed
希望這有助於。
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case SECOND_VALUE:
String s = (String) msg.obj; // if msg.obj is a string
break;
case FIRST_VALUE:
AnotherObject = (AnotherObject) msg.obj; // if it is another object
break;
default:
super.handleMessage(msg);
}
}
實例和鏈接 – reagan
非常有幫助我想我也可以發送一個包含該數據的數據包嗎? –
捆綁是最後的手段,使用arg0,arg1和obj。使用Handler.obtainMessage()或Message.obtain()以適當的參數初始化消息。也不是真的,Handler被用來與不同的主題進行交談,OP可以說,你也可以用它來與自己交談 – pskink