【问题标题】:Is onStart() method redundant? [duplicate]onStart() 方法是多余的吗? [复制]
【发布时间】:2013-06-13 13:07:17
【问题描述】:

关于Activity onStart() 用法的问题。我阅读了几篇关于活动生命周期的文章(Android activity life cycle - what are all these methods for?Difference between onStart() and onResume() 等),查看了代码示例,但我无法想象可以使用方法 onStart() 的任何实际情况。在我看来,onCreate() 和 onResume() 涵盖了开发人员可能遇到的 100% 的情况。 有人可以举个例子说明这种方法有用吗?

【问题讨论】:

标签: android android-activity


【解决方案1】:

所以 onStart 在 onStop 之后被调用,在 onPause 之后被调用 onResume 所以让我们想象一下你在一个活动中一个 alertDialog Pops here 你的活动在这里暂停所以当 AlertDialog 去你 onStart 时 Pause 不会被调用。第二种情况,你在一个活动中你在另一个活动中你的活动被停止了,因为你完全失去了焦点,然后当你回到这个活动时 onStart 被调用!你能看出区别吗?

【讨论】:

  • 我不确定我是否理解您的回答。想象一下你在活动 A1 中,然后运行活动 A2。将是下一个事件:A1.onPause、A2.onCreate、A2.onStart、A2.onResume、A1.onStop。然后单击返回,将是下一个事件:A2.onPause、A1.onRestart、A1.onStart、A1.onResume、A2.onStop、A2.onDestroy。所以 onResume 总是放假 onStart,你可以在 onResume 中做所有事情。
  • 不!因为每次恢复时都会执行 onResume 中的所有代码,这就是为什么最好只实现 onStart 中所需的部分。想象一个应用程序,它显示您在数据库中的当前图片,当您单击图片时,它会打开更大的视图,但是您停留在此活动上,当您将活动更改为下一个活动时,您将暂停(在这里你' re on stop) 并回到你想重新加载的那个,以防你添加了一张图片,如果你在 onResume 中这样做,你会在每次点击图片的大视图时都会这样做。你现在能理解区别了吗?跨度>
  • 你想告诉它是可能的情况,什么时候会被称为“onStart()”而不是“onResume()”,在你显示对话框之后,那一刻在活动中将被调用“onPause()”,然后你关闭它并且只会被称为“onResume()”而没有“onStart()”?很难准确理解您描述的情况,您可以更新您的答案并给出一段代码或示意图?
  • 好的,我试试。想象一下,你显示一个像 dat 这样的警告对话框: dialog.show();在这里,当您的活动不再处于前台时,对话框出现在您当前活动的前面 onPause 被调用,但您仍然可以看到它在 Stop 没有被调用然后当您执行 dialog.dismiss() onResume 被执行但不是在开始时,因为onStop 没有被调用,只有当你的活动完全消失时才会调用它,所以当你在一个屏幕上看不到它时(例如当你启动另一个屏幕时)
  • 非常感谢您的耐心等待,现在我看到了不同之处。还有一个很好的例子是运行一个透明的活动,来自这个问题stackoverflow.com/questions/2176922/…
猜你喜欢
  • 1970-01-01
  • 2018-12-19
  • 1970-01-01
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-07
  • 2018-04-14
  • 1970-01-01
相关资源
最近更新 更多