0

3つのアクティビティ(a、b、c)があります。アクティビティaには、数秒のアクティビティbの後に開始するカウントダウンタイマーがあります。アクティビティaで、ユーザーはアクティビティcを開始できます。

Intent myIntent = new Intent(a.this, c.class);
a.this.startActivity(myIntent);
finish();

このコードを使用して、countdowntimerアクティビティaを終了し、cを開始します。ここで問題:ユーザーがcを開始すると、cは開始しますが、カウントダウンは停止せず、終了時にアクティビティbを開始します。なんで?カウントダウンタイマーを使用して、ホールアクティビティを終了しました。理解できない。私も試しましonDestroy()たが、うまくいきません。私のカウントダウンタイマー:

new CountDownTimer(7000, 1000) {
  public void onTick(long millisUntilFinished) { }
  public void onFinish() { }
}.start();
4

3 に答える 3

2
public class a extends Activity {
   CountDownTimer timer;

   public void onCreate(Bundle bundle)
   {
     // ..
     timer = new CountDownTimer(7000, 1000) {
       public void onTick(long millisUntilFinished) { }

       public void onFinish() {
        Intent myIntent = new Intent(a.this, b.class);
        a.this.startActivity(myIntent);           
       }
     }.start();
   }

   public void startActivityC()
   {
      timer.cancel();
      Intent myIntent = new Intent(a.this, c.class);
      a.this.startActivity(myIntent);      
   }   
}

これは疑似コードであり、バグやエラーがある可能性があることに注意してください。作業コードではなく、単にテクニックを説明することを目的としています。

于 2012-05-01T14:36:12.053 に答える
0

a.this.startActivity(myIntent); で新しいアクティビティを開始するとき。「a」アクティビティは停止し、finish() 呼び出しは実行されません。「c」アクティビティを開始する前に、タイマーを停止する必要があります。

于 2012-05-01T14:29:40.837 に答える
0

アクティビティ a の onPause() 関数をオーバーライドして、タイマーを停止します。おそらく、アクティビティ c を開始するボタンまたはアクションによって設定されたブール変数をチェックします。

于 2012-05-01T14:56:38.830 に答える