0

我的应用程序中有一个按钮,如果我单击一次,一切正常,问题是当我继续快速单击它时,我会得到 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 来做一些需要很长时间的事情。

谁能给我一些建议?非常感谢!

4

1 回答 1

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
         }
     }
于 2012-06-01T12:56:41.380 回答