Android版难题

时间:2012-12-28 15:27:59

标签: android

在回调我的第一个活动时,它应该调用onResume.It在Android版本2.2中调用相同。但是当我检查Android 4.1时,它调用onCreate方法调用splashscreen,因此看起来应用程序正在重启。我怎样才能确保为每个版本的android调用onResume?

谢谢

2 个答案:

答案 0 :(得分:1)

如果系统在未使用时删除了您的活动,则系统会收到onCreate正常行为。

您可以将启动画面作为单独活动的一部分来避免此问题。

答案 1 :(得分:1)

正如亨利所说,你不能保证onCreate不会被再次召唤 - 你不负责那个生命周期。如果系统决定在不在前台的情况下摆脱您的活动,那么当您返回它时它将被重新创建。如果要确保不再显示启动画面,则需要保存状态以表示已显示(例如,使用onSaveInstanceState)。顺便说一句,启动画面通常不是一个很好的主意,因为这个原因。最好将您的应用程序视为松散的活动集合,可以随机输入和重新输入,就像Android系统基本上一样。你看到在Android上使用的启动画面,通常会看到它们有些行为异常。

如果要跟踪启动画面可能对应的应用程序生命周期,则可以继承Application对象并在其中放置标记。但是,Android可能会让您的应用程序运行数周,因此用户不一定会经常看到该启动画面。

请记住,启动画面的真正目的应该是在长时间加载过程中向用户展示一些不错的东西,而不是将品牌放在脸上。如果您使用onSaveInstanceState方法(通常也是onRetainNonConfigurationInstance),那么您显示启动屏幕的情况确实会是您需要重做该加载过程的情况,因此这是正确的。但是,通常最好重新考虑设计并快速调出最小的UI,然后显示正在加载一些数据。

最后,这里有一位深入研究这个主题的人:http://android.cyrilmottier.com/?p=632