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

  • FullMag

    FullMag

    15 ŞUBAT 2007
  • Jabari Johnson

    Jabari Johns

    18 Ocak 2008
  • The10HourMan

    The10HourMan

    28 EYLÜL 2012