Android'de bir aktiviteye başlamadan önce (örneğin, etkinlik bazı veriler yüklenirken) bir ilerleme iletişim kutusunu nasıl görüntülüyorsunuz?Android'de bir etkinlik başlamadan önce ilerleme iletişim kutusu nasıl görüntülenir?
cevap
Verileri AsyncTask'a yüklemeniz ve arabiriminizi güncelleştirmeniz gerekir veriler yüklenince tamamlanır.
AsyncTask'in onPostExecute()
yönteminde yeni bir aktivite bile başlatabilirsiniz.
public class MyTask extends AsyncTask<Void, Void, Void> {
public MyTask(ProgressDialog progress) {
this.progress = progress;
}
public void onPreExecute() {
progress.show();
}
public void doInBackground(Void... unused) {
... do your loading here ...
}
public void onPostExecute(Void unused) {
progress.dismiss();
}
}
Sonra aktivitesinde yapardın:
Daha net söylemek gerekirse AsyncTask genişleten yeni bir sınıf gerekir
ProgressDialog progress = new ProgressDialog(this);
progress.setMessage("Loading...");
new MyTask(progress).execute();
Çok teşekkürler :) Cevabınız işe yaradı. – Neha
Hey, cevabınız için teşekkürler, ben tam olarak bunu yapıyorum, ama nedense, telefon yatay yönde iken, dikey yönelimde iken progressDialog açılır. Bunun hakkında bir fikrin var mı? İletişim kutusunu birinci sınıftan (myTask olarak adlandırılan) başlatmaya çalıştım ama yine de aynı sorun. Bazen, iletişim kutusu portre modunda çalışır, ancak odağın dışına bakar ve bu yalnızca 10 denemede bir kez olur. – Art
Android'de uzun süren bir işlem başlattığınızda, bunu her zaman başka bir iş parçacığında gerçekleştirmesi önerilir. Ardından, bir ilerleme iletişim kutusunu görüntülemek için UI iş parçacığını kullanabilirsiniz. Sürecin çalıştığı aynı (UI) iş parçacığında bir ilerleme iletişim kutusu görüntüleyemezsiniz.
uzun süren işlemini
@Override
public void run() {
//your code here
}
gerçekleştirmek için
public class SyncDataActivity extends Activity implements Runnable
Ve nihayet bir yöntem aşağıdaki gibidir Runnable uygulamalıdır Bu aktivite için Prosesinizi
pd = ProgressDialog.show(this, "Synchronizing data", "Please wait...");
Thread t = new Thread(this);
t.start();
başlatmak için aşağıdakileri yapın
Eğer iş parçacığı kullanırsanız, kullanıcı arabiriminde görev sonrası kod yürütme gibi çeşitli şeyleri yönetmeniz gerekir. –
Matthew ... AsyncTask'taDaemon'u true olarak ayarlayabilir misiniz? – JAL
Merhaba, söylediğin gibi denedim, ama hala çalışmıyor. Kodumu aşağıda gönderiyorum. Herkes yanlış ne yapıyorum söyle lütfen? – Neha
sorunuzun önce mevcut boşlukları kaldırın olmalıdır .. Bir kod bloğu olarak alınıyor ve sorunuzu daha da zorlaştırıyor. – DTing