运行 每个处理程序/定时器/线程执行的不同代码
Running a different code for each Handler/ Timer/ Thread execution
我知道如何使用处理程序或定时器/线程/等。您调用处理程序,并在代码中需要它的地方启动/停止它。通常,处理程序会 运行 一遍又一遍地执行某个代码,直到它停止。我想知道是否有办法为每次执行 运行 不同的代码。我想到的一种方法是执行以下操作。
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}
这是最好的方法吗?它看起来不是很干净,但它工作正常,所以我想知道是否有更好的方法来做到这一点。
你可以这样做
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
我知道如何使用处理程序或定时器/线程/等。您调用处理程序,并在代码中需要它的地方启动/停止它。通常,处理程序会 运行 一遍又一遍地执行某个代码,直到它停止。我想知道是否有办法为每次执行 运行 不同的代码。我想到的一种方法是执行以下操作。
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}
这是最好的方法吗?它看起来不是很干净,但它工作正常,所以我想知道是否有更好的方法来做到这一点。
你可以这样做
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