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

  • Canceriansoul

    Canceriansou

    15 Ocak 2011
  • Migs351

    Migs351

    3 HAZİRAN 2007
  • TechBalance

    TechBalance

    12 HAZİRAN 2011