2016-02-07 82 views
0

對不起,我是新的android java。請在下面的代碼中閱讀評論標籤「//」,當我點擊我的按鈕時,發送郵件和卸載在同一時間工作,如何推遲?如何延遲onClick(Android)

@Override 
    public void onClick(View v) { 
     // execute send mail first 
     sendEmail(); 
     // delayed 30 second then execute this uninstall. 
     Uri packageUri = Uri.parse("package:com.naufalazkia.zitongart"); 

      Intent uninstallIntent = 
       new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri); 
     startActivity(uninstallIntent); 
    } 

回答

0

使用postDelayed():

@Override public void onClick(View v) { 
     // execute send mail first 
     sendEmail(); 
     v.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       Uri packageUri = Uri.parse("package:com.naufalazkia.zitongart"); 

       Intent uninstallIntent = 
        new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri); 
        startActivity(uninstallIntent); 
      } 
     }, 30000L); 
    } 
+1

謝謝,愛這個方法man:v –

0

你可以這樣做:

@Override 
    public void onClick(View v) { 
     // execute send mail first 
     sendEmail(); 
     Thread.sleep(30000L);// delayed 30 second then execute this uninstall. 
     Uri packageUri = Uri.parse("package:com.naufalazkia.zitongart"); 

      Intent uninstallIntent = 
       new Intent(Intent.ACTION_UNINSTALL_PACKAGE, packageUri); 
     startActivity(uninstallIntent); 
    } 

但它不是一個良好的發展實施睡覺線程,而不是你可以重構某些模塊,並等待一些回調或通知。

+1

這裏的問題是沒有這麼多的延遲本身,而是延遲發生在主UI線程>鎖定主UI線程不是很好的做法,因爲它會像用戶看起來一樣懸掛在用戶身上。 – AgentKnopf

0

您可以使用處理程序將所需時間的方法延遲。這裏是如何:

Handler handler = new Handler(); 
     handler.postDelayed(new Runnable() { 
      @Override 
      public void run() { 
       //Your method to be executed after the delay. 
      } 
     }, 1000); //1000 is the time in milliseconds(1 sec) to wait.