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

  • InsideBlackBerry

    InsideBlackB

    14 Aralık 2009
  • ipsy

    ipsy

    1 EKİM 2012
  • tseyina

    tseyina

    2 AĞUSTOS 2006