2012-02-12 134 views
0

我有一个应用程序运行倒数计时器,并在计时器用完时调出警报箱,以便游戏可以重新启动。不幸的是,当我点击后退按钮并再次打开应用程序时,它会在原来的倒计时器用完时崩溃。警报箱,CountDownTimer,后退按钮崩溃

以下代码位于我的Activity的onCreate中。

 CountDownTimer cdt = new CountDownTimer(totalTime*1000, 1000) { 
     public void onTick(long millisUntilFinished) { 
      time = (int) ((millisUntilFinished)/1000)*100/totalTime;    
      TimeBar.setProgress(time); 
     } 

     public void onFinish() { 
      time = 0;    
      TimeBar.setProgress(time); 
      AlertDialog.Builder alertbox = new AlertDialog.Builder(mContext); 
      alertbox.setMessage("Sweet! " + score + " points!"); 
      alertbox.setPositiveButton("Leaderboard", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface arg0, int arg1) { 
        ScoreloopManagerSingleton.get().onGamePlayEnded((double) score, null); 
        startActivity(new Intent(BubblesActivity.this, LeaderboardsScreenActivity.class)); 
        BubblesActivity.this.finish(); 

       } 
      }); 
      alertbox.setNeutralButton("Replay", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface arg0, int arg1) { 
        BubblesActivity.this.finish(); 
        startActivity(new Intent(BubblesActivity.this, BubblesActivity.class)); 

       } 
      }); 
      if(alertbox!= null) 
       alertbox.show(); 



     } 
    }.start(); 

回答

0

没有一个堆栈跟踪,很难说会发生什么,但它最有可能有事情做,你从你的CountDownTimer引用死Activity

调用enter code here 0123D中的CountDownTimer.cancel()可能会解决这个问题。

+0

我相信你是对的。我试图这样做,但是由于CountDownTimer被声明在哪里,所以它不在onDestory()或onPause()的范围内。 此外,这是令人尴尬的,我没有为我的生活能够找出如何找到并复制我的堆栈跟踪,尽管查看一堆其他职位解释它。 – 2012-02-12 18:06:39

+0

您应该在活动中放置“CountDownTimer cdt”。您可以在logcat中找到堆栈跟踪,可以通过eclipse中的选项卡或在终端中输入logcat。 – alexanderblom 2012-02-16 23:45:11

相关问题