2010-11-17 12 views
10

2 veya 3 saniye boyunca kukla ilerleme iletişim kutusu açmak istiyorum. Aslında dediğin dışında bir şey yapmaz. Ben kodu vardır:İlerleme İletişim Kutusuna bir gecikme ekleme

ProgressDialog dialog = ProgressDialog.show(this, "", "Detecting...", 
      true); 
    dialog.show(); 

    dialog.dismiss(); 

Ama gösteri ve birkaç saniye görünen diyalog kurmak işten arasına koymak ne? Teşekkürler!

cevap

48

doğru yolu - bu ana engellemez iplik, böylece kullanıcı arayüzü duyarlı kalır:

dialog.show(); 

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    public void run() { 
     dialog.dismiss(); 
    } 
}, 3000); // 3000 milliseconds delay 
+0

Büyük cevabı: }} 3000); // 3000 milisaniye – DEzra

+0

özür dilerim! Beklerken iletimizi iletme iletişiminde nasıl güncelleyebiliriz. örneğin: 5 sn ... 4 sn ... 3 sn ... 2 sn ... 1 sn ... BOOOOM! ve –

0

Hiçbir şey işten çıkarılma ve gösterme arasında gelmez .. size bağlı zaman. Örneğin iletişim sunucusu erişimi önce görüntülenir ve sonucun ardından arasındaki countDownTimer çağrısını kullanın demektir boş gecikme gerekiyorsa

dialog.show(); 
ServerCall(); 
dialog.close(); 

demektir alma görevden alacak ..

2
 progress.setProgress(100); 
     Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      public void run() { 
       pdialog.dismiss(); 
      }}, 3000); 
1

Ayrıca başka çözüm yayınlanan çok daha verimlidir Android'in CountDownTimer kullanabilir ve ben yapabilirsiniz onTick() yöntemiyle düzenli aralıklarlayangınları da destekleyin.

bu örneğe göz, var

new CountDownTimer(3000, 1000) { 

    public void onTick(long millisUntilFinished) { 
      // You don't need anything here 
    } 

    public void onFinish() { 
     dialog.dismiss(); 
    } 
    }.start(); 
+0

'u reddet Bu tam ihtiyacım olan şeydir, Hanlder işlevini Leanback'de kullanamazsınız: D –

1

Böyle bir şey yapabilirsiniz: Sadece son satırında önce ek küme ayracı eksik,

new AsyncTask<Void, Void, Void> 
{ 
    ProgressDialog dialog = new ProgressDialog(MainActivity.this); 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 

     dialog.setTitle("Please wait"); 
     dialog.setMessage("Preparing resources..."); 
     dialog.setCancelable(false); 
     dialog.show(); 
    } 


    @Override 
    protected Void doInBackground(Void... params) { 
     try{ 
      Thread.sleep(3000); 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    @Override 
    protected void onPostExecute(Void aVoid) 
    { 
     super.onPostExecute(aVoid); 
     if (dialog!=null && dialog.isShowing()) 
     { 
      dialog.dismiss(); 
     } 
    } 
}.execute();