1

だから基本的に私はCountDownTimerでこれを処理するためのあらゆる可能な方法を試したと思いますが、私が得た最高のものは十分ではありませんでした。私が正確にやろうとしているのは、ゲームアプリのカウントダウンタイマーを表示することです。時間が0に達すると、アクティビティ(startActivity)が開始され、そこから取得します。「CountDownTimerを使用する」を取得する前に、ほぼ完全に機能するようになったことを示します。CountDownTimer setTextは毎秒ビューに設定され、0に達したときにアクティビティを起動しましたが、タイマーの開始後に戻るボタンを押すだけで、(16000ミリ秒)実行され続け、アプリを強制的に閉じます。 countdowntimerには、onPauseまたはonStopをキャンセルするメソッドがありません。

ハンドラーを使用し、代わりにtimertasksでタイマーを使用することを聞いたことがあります。誰もが適切な「cancel()」を持っていると言っているようです。または「removeCallback」メソッド。しかし、私はこの例があるところはどこにも見当たりません。

ですから、私があなたの助けをどこで使うことができるかを結論付けることは、少なくともあなた(あなたの素晴らしい才能のあるプログラマー全員)がそれについてどのように取り組むかを私に伝えることです。簡単に言えば、時計が0に達したときにアクティビティを開始でき、それでもいつでもキャンセルできます。

これは、アプリを市場に送る前に行う必要がある最後のことです。 よろしくお願いします。

4

2 に答える 2

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>
于 2011-05-14T00:45:44.270 に答える
0

関数をオーバーライドすることで、Countdowntimer をキャンセルできますonStop()

@Override  
    protected void onStop()        
{

        super.onStop();  
        countdowntimer.cancel();  
}
于 2012-03-12T14:45:17.993 に答える