您好我的应用程序中有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类中执行线程以创建套接字和输出流。
答案 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);
}