我知道如何使用Handler或Timer / Thread等。您可以调用处理程序,并在代码中需要的地方启动/停止它。通常,处理程序会反复运行某个代码,直到它停止为止。我想知道是否有办法为每次执行运行不同的代码。我想到的一种方法是做如下的工作。
Handler h = new Handler();
int delay = 1000; //milliseconds
int handlerCount = 0;
h.postDelayed(new Runnable(){
public void run(){
//update handler count
handlerCount = handlerCount + 1;
if (handlerCount ==1 ) {
//run code 1
}
if (handlerCount ==2) {
//run code 2
} // etc.
h.postDelayed(this, delay);
}
}, delay);
或者,如果您需要每隔一段时间执行不同的代码,您可以
if (handlerCount%2 == 0) {
//Do first function
} else {// do second function}
这是最好的方法吗?它似乎不是很干净,但它工作正常,所以我想知道是否有更好的方法来做到这一点。
答案 0 :(得分:0)
你可以这样做
Handler handler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case case1:
//ops for case1
break;
}
}
};
然后向Handler
发送消息,请使用以下代码
handler.obtainMessage(what, arg1, arg2, dataobj)
//what - integer to identify this message
//arg1 - optional integer argument1
//arg1 - optional integer argument2
//dataobject - optional data object to be passed