0

活动生命周期回调是否必须成对实现?

例如

  • 如果你覆盖onCreate你也必须覆盖onDestroy
  • 如果你覆盖onStart你也必须覆盖onStop
  • 如果你覆盖onResume你也必须覆盖onPause

即,如果您实施onCreate但省略实施,您的应用程序会崩溃onDestroy吗?

成对实施只是一种好习惯,还是根本不重要(只需实施您需要的)?

4

2 回答 2

4

只实现你需要的。其他的将自动从超类 ( Activity) 中调用。如果您需要在生命周期的那个点添加功能,您应该只覆盖它们。通常,如果您要处理 in 中的某些内容onPause(),您可能还会处理 in 中的逆运算onResume()。不过,情况并非总是如此。

编辑:通过你的编辑,没有看到代码,我猜你忘记了对super.onStart()and的调用super.onResume()。如果没有,请发布崩溃的实现和堆栈跟踪。

于 2012-09-07T18:34:54.883 回答
2

不,您不需要成对覆盖生命周期方法。

但是,如果您需要显式释放您在一种方法中创建的变量,那么在匹配方法中释放它是有意义的。


如果您实现 onCreate 但忽略实现 onDestroy 说,您的应用程序会崩溃吗?

Stack Overflow 上的一个反复出现的问题涉及关闭 SQLiteDatabases。许多程序员打开他们的数据库,onCreate()但忘记在onDestory().

于 2012-09-07T18:37:54.100 回答