我的应用程序中有一个按钮,如果我点击一次,一切正常,问题是当我一直点击它很快,我会得到一个ANR。这是我的代码的一部分:
shareBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
shareBtn.setClickable(false);
new UploadPicture().execute(urls);
}
});
private class UploadPicture extends AsyncTask<String, Void, Boolean> {
protected Boolean doInBackground(String... urls) {
Booblean boo = uploadPic(picPath);
return boo;
}
protected void onPostExecute(Boolean result) {
//do nothing
}
}
1,我有shareBtn.setClickable(false); 2,我使用AsyncTask来做很长时间的事情。
谁能给我一些建议?非常感谢!答案 0 :(得分:1)
这是pre android 4.0版本的问题
如果您快速单击该按钮,则会对所有点击进行排队并逐个处理。 但你想要的是在第一次点击后忽略其余的点击。
按如下方式编辑您的代码
boolean isClickable=true;
shareBtn.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
if(isClickable)
{
new UploadPicture().execute(urls);
}
isClickable=false;
}
});
private class UploadPicture extends AsyncTask<String, Void, Boolean> {
protected Boolean doInBackground(String... urls) {
Booblean boo = uploadPic(picPath);
return boo;
}
protected void onPostExecute(Boolean result) {
//do nothing
}
}