2011-05-13 44 views
1

所以基本上我認爲我試圖用CountDownTimer處理這種情況的各種可能方式,但是我得到的最好結果還不夠好。我試圖做的就是爲遊戲應用程序顯示一個倒數計時器,一旦時間到了0,它開始一個活動(startActivity),我從那裏得到它。現在我得到「只使用CountDownTimer」之前,我會說我已經幾乎完美地工作了。 CountDownTimer setText每秒都會查看一個視圖,甚至在它打到0時啓動該活動,但是應該在計時器啓動後按下後退按鈕,它會繼續運行(16000毫秒)並強制關閉應用程序, countdowntimer沒有取消onPause或onStop的方法。如何在不使用CountDownTimer的情況下創建倒計時時鐘

現在我聽說過使用處理程序和使用timertasks定時器來代替。每個人似乎都說他們有適當的「取消()」。或「removeCallback」方法。然而我無法看到任何有這方面例子的地方。

所以,總結一下我可以使用你的幫助是至少告訴我你(你所有的優秀天才程序員)會怎麼做。長話短說,能夠在時鐘點數爲0並且隨時可以取消時發起活動。

這是我將應用程序推向市場之前需要做的最後一件事。 在此先感謝你們。

+0

郵報你如何創建CountDownTimer,爲什麼你不處理後退按鈕你如何啓動活動時,計時器到達0 – Squonk 2011-05-14 00:03:49

+0

,做一個timer.cancel()的代碼?這會阻止計時器計數。你也可以在onPause()中這樣做,所以如果活動暫停了,它會停止計時器(除非你希望它在活動暫停時運行...)在我的一個應用程序中,我使用countdowntimer開始遊戲,處理輪次和時間 - 它可以在任何時候以任何理由取消我的球員(他們接到一個電話,他們按回家,他們按取消,回合結束等)。 。) – jkhouw1 2011-05-14 00:12:59

+0

引用「即時假設,因爲countdowntimer沒有一個方法取消onPause或onStop。」如果您將計時器聲明爲成員變量,則可以在onPause或onStop(或其他位置)執行mYourTimer.cancel() – jkhouw1 2011-05-14 00:19:11

回答

2

在,做發射活動:

public class YourActivity extends Activity { 
private Runnable runnable = new Runnable(){ 
    @Override 
    public void run() { 
     startActivity(new Intent(YourActivity.this, YourOtherActivity.class)); 
    }}; 
private Handler handler = new Handler(); 
@Override public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.linearlayoutwithbutton); 
    Button button = (Button) findViewById(R.id.button1); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      stopTimer(); 
     } 
    }); 
     startTimer(); 
} 
    private void startTimer(){ handler.postDelayed(runnable, 16000); } 
    private void stopTimer(){ handler.removeCallbacks(runnable); } 
} 

linearlayoutwithbutton.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/linearlayout" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
    <button android:id="@+id/button1" 
      android:text="Cancel" /> 
</LinearLayout> 
+0

謝謝你,真的很感激! – MirrowPR 2011-05-14 23:14:47

0

您可以通過覆蓋onStop()功能取消Countdowntimer。

@Override 
    protected void onStop()   
{ 

     super.onStop(); 
     countdowntimer.cancel(); 
}