每当按下按钮并释放按钮时,我都会发送HTTP帖子。在释放按钮之前,“按下”的POST可能没有响应,因此我尝试同时运行这些任务。但是,有时,释放按钮的POST请求在请求按下按钮之前被发送到服务器。如何避免/解决此问题?
button = (ImageButton) findViewById((R.id.button1));
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
HTTPAsyncTask task = new HTTPAsyncTask();
if (event.getAction() == MotionEvent.ACTION_DOWN ) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, Utilities.StringCollection.rotateRight);
return true;
}
else if (event.getAction() == MotionEvent.ACTION_UP){
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR, Utilities.StringCollection.stop);
return true;
}
return false;
}
});
如果您的最小SDK为11“ HONEYCOMB”,则可以像这样调用asyncTask使其在单线程中运行,以防止它们之间出现竞争状态:
button = (ImageButton) findViewById((R.id.button1));
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
HTTPAsyncTask task = new HTTPAsyncTask();
if (event.getAction() == MotionEvent.ACTION_DOWN ) {
task.execute(Utilities.StringCollection.rotateRight);// using one thread
return true;
}
else if (event.getAction() == MotionEvent.ACTION_UP){
task.execute(Utilities.StringCollection.stop);// using one thread
return true;
}
return false;
}
});