Android:使用onTouchListener()在循环中执行线程

时间:2012-05-30 21:59:54

标签: android ontouchlistener

您好我的应用程序中有8个按钮。单击时,每个按钮都配置onclickListener(),并在套接字上写入字符串。现在我希望当我按住按钮时,必须在循环中写入字符串。这是我想要做的。

bLeft.setOnTouchListener(new View.OnTouchListener() {

        @Override
        public boolean onTouch(View arg0, MotionEvent event) {
            // TODO Auto-generated method stub
            MyThread start = new MyThread();
             boolean isReleased = event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL;
             boolean isPressed = event.getAction() == MotionEvent.ACTION_DOWN;

        while (isPressed) {

                start.execute(ip, "left");

                break;
        }
            return false;
        }
    });

不知怎的,我不知道它为什么不起作用。 start,execute(string,string)在AsyncTask类中执行线程以创建套接字和输出流。

2 个答案:

答案 0 :(得分:0)

bLeft.setOnTouchListener(new View.OnTouchListener() {

    @Override
    public boolean onTouch(View arg0, MotionEvent event) {
        // TODO Auto-generated method stub
        MyThread start = new MyThread();
         boolean isReleased = event.getAction() == MotionEvent.ACTION_UP || event.getAction() == MotionEvent.ACTION_CANCEL;
         boolean isPressed = event.getAction() == MotionEvent.ACTION_DOWN;

    while (isPressed) {

            start.execute(ip, "left");

            break;
    }
        return false;
    }
});

首先,isReleased不会被使用所以摆脱那个变量会让事情变得更复杂。

第二件事确保它最终在while循环中结束:

`Log.d(“debugText”,“我在这里”)'

并记录按下状态。这将使调试时的内容更加清晰。

另请参阅以下关于painless Threading的Android文档。确保你使用的是正确的东西。

调试后你可能会理解为什么它没有执行。如果没有,则需要更多信息。

答案 1 :(得分:0)

一个异步任务只能执行一次...你试图在while循环中使用它...这意味着你试图重复使用它...你需要重新初始化每次迭代的启动while loop ...

 while (ispressed){
      start = new YourAsyncTask();
      start.execute(params);
 }