有人可以向我解释如何使用switch
该what
字段来确定要执行的代码。此外,如何创建要在开关中使用的消息 obj 也很棒。
我的处理程序代码示例:
Handler uiHandler = new Handler(){
public void handleMessage(Message msg){
switch(msg.what){
}
}
};
如果您正在使用处理程序,我假设您想在不同的线程中做一些工作,并使用处理程序来与您正在启动的线程和主线程进行黑白通信。举个例子:
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:我什么时候应该使用 Handler(),什么时候应该使用线程?& Android 处理程序操作未处理
希望这可以帮助。
@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);
}
}