Android活动堆栈onCreate订单

时间:2012-12-11 16:47:10

标签: android android-activity

我有一个包含2个主要活动的Android应用。当应用程序从头开始时,两个活动都会启动并运行得很好。类似于:A - > B.活动A完成A& A所需的所有初始化。 B.我在真实硬件和仿真器上的所有本地测试,A总是在创建B之前创建(onCreate)。

但是,在我的应用程序的崩溃报告中,我看到一个例外情况,只能通过B在没有或在A之前启动来解释。这可能吗? Android会创建内部活动,而不会为我的应用创建其他活动(B没有A)吗?是否保证了活动创建的顺序(A然后是B)?如何使用模拟器或真实硬件重新创建这些场景?

无论首先启动哪个Activity,我都可以轻松地将初始化代码移动到工作中,但我想在进行更改之前学习如何重现和测试。我查看了文档,但它并没有真正帮助。

以下是用户按下“播放”按钮时启动任务B的代码:

private void handlePlayTouch()
{
    Intent intent = new Intent(getApplicationContext(), PlayActivity.class);
    startActivity(intent);      
}

2 个答案:

答案 0 :(得分:1)

启动活动B后,按主页按钮,在后台运行您的应用程序。如果可用内存非常低,系统将终止您的应用程序。如果您在应用程序被杀后尝试切换到您的应用程序,系统将尝试恢复您的应用程序和活动B而不先创建A。

您可以使用DDMMS的设备视图手动停止您的应用程序,还有一个红色的“停止过程”按钮。确保您应该在后台运行您的应用程序。

答案 1 :(得分:0)

在您的情况下,我建议您使用单个活动。在创建中,您可以准备好所有内容,然后执行您需要的操作。如果您希望确保仅在完成其他操作时才会执行某些操作,请使用AsyncTasks。

在doInBackground =>做初始化和onPostExecute,做你需要做的事情。

仅当doInBackground完成时才会执行onPostExecute。

http://developer.android.com/reference/android/os/AsyncTask.html

编辑:

您的结构不符合Android中的良好编程习惯,但如果您必须保留此结构,则至少应该为活动A使用“不可杀戮”服务。这将使您的代码更难以销毁当您的应用程序将被放置在后台时,这是一个简单的活动,但仍有可能被销毁。

要了解您的问题,请参阅Android活动生命周期:

enter image description here

有关使用的服务,请参阅:

http://developer.android.com/reference/android/app/Service.html

http://www.androidguys.com/2009/09/09/diamonds-are-forever-services-are-not/