2011-03-05 25 views

cevap

60

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(); 
+0

Çok teşekkürler :) Cevabınız işe yaradı. – Neha

+0

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

2

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

+0

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. –

+0

Matthew ... AsyncTask'taDaemon'u true olarak ayarlayabilir misiniz? – JAL

+0

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

İlgili konular