-1

嗨,在我的应用程序中有 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 类中的线程以创建套接字和输出流。

4

2 回答 2

0

asyncronos 任务只能执行一次……您正试图在 while 循环中使用它……这意味着您正在尝试重复使用它……您需要为 while 循环的每次迭代重新初始化 start。 ..

 while (ispressed){
      start = new YourAsyncTask();
      start.execute(params);
 }
于 2014-10-19T03:24:11.593 回答
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", "I am in the while")'

并记录新闻状态。这将使调试时更清楚。

还可以查看以下有关无痛线程的 Android 文档。确保您使用的是正确的东西。

调试后,您可能会明白为什么它没有执行。如果不是,则需要更多信息。

于 2012-06-04T21:33:45.267 回答