SORU
29 NİSAN 2010, PERŞEMBE


İptal etmek için İdeal şekilde yürütülen bir AsyncTask

Bir arka plan iş parçacığı AsyncTask kullanarak ses dosya alma ve ses uzaktan Dosya görüntüleme işlemleri çalıştırıyorum. Cancellable bir ilerleme çubuğu yürütüyor fetch kez gösterilir.

/Kullanıcı (karşı karar verir) işlemi iptal ettiğinde AsyncTask çalışma iptal iptal etmek istiyorum. Böyle bir durumda işlemek için en ideal yol nedir?

CEVAP
29 NİSAN 2010, PERŞEMBE


Sadece AlertDialogs'boolean cancel(...); aslında her yerde kullanıyorum s hiçbir şey yapmaz. keşfetti Harika.
Yani...

public class MyTask extends AsyncTask<Void, Void, Void> {

    private volatile boolean running = true;
    private final ProgressDialog progressDialog;

    public MyTask(Context ctx) {
        progressDialog = gimmeOne(ctx);

        progressDialog.setCancelable(true);
        progressDialog.setOnCancelListener(new OnCancelListener() {
            @Override
            public void onCancel(DialogInterface dialog) {
                // actually could set running = false; right here, but I'll
                // stick to contract.
                cancel(true);
            }
        });

    }

    @Override
    protected void onPreExecute() {
        progressDialog.show();
    }

    @Override
    protected void onCancelled() {
        running = false;
    }

    @Override
    protected Void doInBackground(Void... params) {

        while (running) {
            // does the hard work
        }
        return null;
    }

    // ...

}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • bunnyboxx

    bunnyboxx

    17 NİSAN 2008
  • ELawshea

    ELawshea

    26 Mayıs 2008
  • Kiddyzuzaa

    Kiddyzuzaa

    25 ŞUBAT 2014