我的应用程序(Android)中的单击按钮得到ANR

时间:2012-06-01 12:06:14

标签: android

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

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

1 个答案:

答案 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
         }
     }