【发布时间】:2013-01-20 20:00:54
【问题描述】:
我的代码中有以下流程:
Activity1 : startActivity(Activity2) --->
Activity2: startActivity(Activity3) --->
Activity3: startService(MyService) --->
MyService: startActivity(Activity4)
上面的每个活动都显示一个视图,并代表 4 步设置中的一个步骤。最终的 Activity - Activity 4 - 在 MyService 内部完成一些设置工作后启动,它基本上告诉用户,
"The service has started, you can close the application by pressing Back or Home button"
当用户按下 Back 或 Home 时,我想销毁 Activities 1-4 ,并且只运行 MyService 。此外,如上所述停止应用程序后,当用户通过菜单导航回应用程序并启动它时,我将检查MyService 是否已在运行。如果它已经在运行,我不想显示Activities 1-3,我想显示另一个Control Panel View(另一个活动),它说,
"Dude, the service is already running, do you want to Stop or Restart it?"
此视图将有一个停止和重新启动按钮,用于执行相应的任务。
我的问题:
当按下返回或主页时,如何从活动 4 中安全地停止活动 1-4?我的想法是为每个Activity添加一个
static stopActivity()方法,并从Activity4的onBackPressed()或onPause()调用Activity[1-3].stopActivity()。然后在每个stopActivity()内部,我会调用finish(),从而结束每个Activity。但是这样做安全有效吗?我上面说明的流程,它是最佳的做事方式,还是有更清洁的方式?我在这些 Activity 中注册了
BroadcastReceivers,所以我需要为每个 Activity 执行干净的退出,没有泄漏的接收器,或者更糟糕的是,由于不干净的退出策略导致应用程序崩溃或影响用户的手机。
感谢您的建议。
【问题讨论】:
-
有几种可能的方法来实现这一点。为了给您更好的答案,请指出用户是否可以使用“返回”键从
Activity3->Activity2->Activity1进入。此外,如果用户在Activity3、Activity2或Activity1并按下 HOME 键会发生什么情况。当他返回应用程序时,他是否应该再次从头开始(Activity1)?或者他应该回到他离开的活动。
标签: android android-intent android-activity android-service