如何理解android活动直接启动或首先杀死 - 然后重新创建?

时间:2012-05-02 21:39:35

标签: android android-activity android-lifecycle

众所周知,所有Android活动都会创建,启动,恢复,运行,暂停,停止,销毁。这个过程在android manual

中很好地展示了

在这个生命周期中是否有任何可能性来理解活动是以哪种方式创建的?我的意思是我怎么能理解活动是直接调用还是活动创建一次然后被android os杀死然后重新创建,因为用户导航回来了?

更基本上我如何理解某项活动是否处于第二次生命或第一次生命中?

编辑:为什么我需要这个?
在我的设计中,我有一个主页面,其中数据从网络加载。当用户单击某些细节时,它会将数据放入静态对象中,就像在Web中进行会话一样。这通常很有效。

但是当用户在第二次生命中启动详细活动时,静态对象中的数据被终止,并且我得到了nullpointer异常。

我有4个项目具有相同的架构,所以我想解决这个问题。

3 个答案:

答案 0 :(得分:2)

您已经获得了流程图信息。通过在Activity或类似期间存储onDestory()消亡的事实,您可以随时保留一些状态供以后使用。然后,下次恢复Activity时,您将知道您是否实际被摧毁或刚刚停止。我不认为你从操作系统中免费获得任何信息,因为在理想的情况下它不应该重要。

答案 1 :(得分:0)

你不应该区分它们,因为即使在它被销毁之后(至少已经调用了这个方法),它可能会“恢复”状态,就像它被摧毁时一样。这可能与第一次创建时的初始状态不同。

请解释为什么需要这个 - 你应该“重新考虑”你的问题,因为Android真的表现得很“奇怪”这个问题。

最好根据Android系统行为设计您的项目实时周期 - 实际上没有任何关于这一点的文档记录(至少到目前为止我还没有找到任何好的文档)

答案 2 :(得分:0)

如果我理解您的问题,您想知道您的活动何时被操作系统销毁或何时暂停。只需使用logcat语句:

onPause() {
    super.onPause();
    Log.v("Activity", "Paused");
}

onDestory() {
    super.onDestroy();
    Log.v("Activity", "Destroyed");
}

你可以为onCreate(),onResume()做任何事情。