在回调我的第一个活动时,它应该调用 onResume。它在 android 版本 2.2 中调用相同的方法。但是当我签入 android 4.1 时,它正在调用调用 splashscreen 的 onCreate 方法,因此看起来应用程序正在重新启动。怎么可能我确保每个版本的android都调用onResume?
谢谢
在回调我的第一个活动时,它应该调用 onResume。它在 android 版本 2.2 中调用相同的方法。但是当我签入 android 4.1 时,它正在调用调用 splashscreen 的 onCreate 方法,因此看起来应用程序正在重新启动。怎么可能我确保每个版本的android都调用onResume?
谢谢
如果系统在未使用时删除了您的活动,它将收到onCreate
正常行为。
您可以将启动画面作为单独活动的一部分来避免该问题。
正如亨利所说,您不能保证不会再次调用 onCreate - 您不负责该生命周期。如果系统决定在它不在前台时摆脱您的活动,那么当您返回它时,它将被重新创建。如果您想确保不再显示启动画面,您需要保存状态以说明它已显示(例如,使用 onSaveInstanceState)。顺便说一句,启动屏幕在 android 上通常不是一个好主意,部分原因是这个。最好将您的应用程序视为可以随机进入和重新进入的活动的松散集合,就像 android 系统基本上一样。在您看到在 android 上使用的启动画面的地方,通常会看到它们有轻微的行为不端。
如果您想跟踪您的应用程序生命周期,启动屏幕可能对应的生命周期,那么您可以子类化 Application 对象并在其中放置一个标志。但是,android 可能会让您的应用程序运行数周,因此用户不一定会经常看到该启动画面。
请记住,启动画面的真正目的应该是在长时间的加载过程中向用户展示一些不错的东西,而不是让您的品牌出现在他们面前。如果您使用带有 onSaveInstanceState 的方法(通常也使用 onRetainNonConfigurationInstance),那么您显示初始屏幕的情况确实是您需要重做该加载过程的情况,因此这是正确的。但是,通常最好重新考虑设计并快速调出最小的 UI,然后显示一些数据正在加载。
最后,有人深入探讨了这个主题:http ://android.cyrilmottier.com/?p=632