运行 每个处理程序/定时器/线程执行的不同代码

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