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

これは、Android 4.0 より前のバージョンの問題です。

ボタンをすばやくクリックすると、すべてのクリックがキューに入れられ、1 つずつ処理されます。しかし、あなたが望むのは、最初のクリックの後、残りのクリックを無視することです。

次のようにコードを編集します

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 に答える