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

  • A Alkhaldi

    A Alkhaldi

    12 Mayıs 2007
  • kourtneyannmakeup

    kourtneyannm

    19 ŞUBAT 2012
  • bored before i even began

    bored before

    30 Mart 2009