CountDownTimer不会让我打电话onDestroy
问题描述:
我已经做了简单的倒计时计时器应用程序,但是当我尝试使onDestroy取消倒数计时器我得到和错误。 我的onDestroy代码块:CountDownTimer不会让我打电话onDestroy
@Override
public void onDestroy()
{
super.onDestroy();
countdowntimer.cancel();
}
而且logcat的错误
12-18 19:16:06.383: E/AndroidRuntime(25512): FATAL EXCEPTION: main
12-18 19:16:06.383: E/AndroidRuntime(25512): java.lang.RuntimeException: Unable to destroy activity {com.android.SquirellMusic/com.android.SquirellMusic.SquirellMusicActivity}: java.lang.NullPointerException
12-18 19:16:06.383: E/AndroidRuntime(25512): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3106)
12-18 19:16:06.383: E/AndroidRuntime(25512): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3171)
12-18 19:16:06.383: E/AndroidRuntime(25512): at android.app.ActivityThread.access$2100(ActivityThread.java:132)
12-18 19:16:06.383: E/AndroidRuntime(25512): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1071)
12-18 19:16:06.383: E/AndroidRuntime(25512): at android.os.Handler.dispatchMessage(Handler.java:99)
12-18 19:16:06.383: E/AndroidRuntime(25512): at android.os.Looper.loop(Looper.java:150)
12-18 19:16:06.383: E/AndroidRuntime(25512): at android.app.ActivityThread.main(ActivityThread.java:4293)
12-18 19:16:06.383: E/AndroidRuntime(25512): at java.lang.reflect.Method.invokeNative(Native Method)
12-18 19:16:06.383: E/AndroidRuntime(25512): at java.lang.reflect.Method.invoke(Method.java:507)
12-18 19:16:06.383: E/AndroidRuntime(25512): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849)
12-18 19:16:06.383: E/AndroidRuntime(25512): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607)
12-18 19:16:06.383: E/AndroidRuntime(25512): at dalvik.system.NativeStart.main(Native Method)
12-18 19:16:06.383: E/AndroidRuntime(25512): Caused by: java.lang.NullPointerException
12-18 19:16:06.383: E/AndroidRuntime(25512): at com.android.SquirellMusic.SquirellMusicActivity.onDestroy(SquirellMusicActivity.java:364)
12-18 19:16:06.383: E/AndroidRuntime(25512): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3088)
任何帮助表示赞赏
答
答案在于)活动的onDestroy以下概念(:
- onDestroy()由DVM自动调用。之后,活动 将从堆栈中移除。
现在,您的countdowntimer.cancel代码将写入super()之后,因此您的countdowntimer.cancel之前的活动(与您的countdowntimer对象一起)将从内存中移除。
所以,只需在onDestroy()方法的末尾移动super.onDestroy()就可以避免应用程序崩溃。
答
最好的解决方案是保存当前的时间并在onPause中停止定时器,然后在onResume中重新启动定时器,并为其添加保存的时间。 [为暂停状态] 为了确保在启动应用程序计时器开始从开始,只分配保存的时间变量0 onStop()[开始案例]
+0
我有点困惑,你能写一个例子吗? – v66dik 2011-12-19 18:51:51
我试过了,仍然得到了同样的错误。应用程序退出时是否还有其他可能取消倒数计时器? – v66dik 2011-12-18 19:34:12