延迟循环特定时间 - Android

时间:2012-01-09 04:04:15

标签: android loops delay sleep keystroke

我试图通过将setPressed设置为true来模拟击键,然后通过postDelay设置setPressed将其设置为false几个刻度。我的问题是,这在应用一次时非常有效,但是当我尝试迭代一个包含多个元素的列表时,我相信这些延迟会相互影响。迭代太快了。我相信解决方案是延迟循环迭代一段时间比postDelayed更长,但我也没有取得多大成功。

public void myOnClickListener(View view) {

    switch (view.getId()) {

    case R.id.test:
        //adds two random digits to list
        addRandomDigits(2);

        int size = list.size();
        System.out.println("Size: " + size);
            tmpButton = map.get(list.get(list.size()-1));
            tmpButton.setPressed(true);
            tmpButton.postDelayed(new Runnable() {
                public void run() {
                    tmpButton.setPressed(false);
                }
            }, 200);

        Log.e("**droid", "Droid sequence: " + getArrayListAsString(list));
        break;

如果这个解决方案似乎不是最有效,最符合逻辑的,那么我对任何建议都持开放态度。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我建议您在特定时间段内使用TimerTask类来代替循环。

private class myLoop extends TimerTask
{
       public void run()
       {
           // Place your code here.

           addRandomDigits(2);

           int size = list.size();
           System.out.println("Size: " + size);
           tmpButton = map.get(list.get(list.size()-1));
           tmpButton.setPressed(true);
           tmpButton.setPressed(false);

          Log.e("**droid", "Droid sequence: " + getArrayListAsString(list));
          break;
       }
}

你需要将你的tmpButton设为静态。