0

我的代码中有以下流程:

 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?"

此视图将有一个停止和重新启动按钮,以执行相应的任务。

我的问题:

  1. 当按下返回或主页时,如何从活动 4 中安全地停止活动 1-4?我的想法是为static stopActivity()每个 Activity 添加一个方法,并从Activity[1-3].stopActivity()oronBackPressed()调用Activity4。然后在 each 内部,我会调用,从而结束每个 Activity。但是这样做安全有效吗?onPause()stopActivity()finish()

  2. 我上面说明的流程,它是做事的最佳方式,还是有更清洁的方式?我已经BroadcastReceivers注册了这些Activity,所以我需要为每个Activity执行干净的退出,没有泄漏的接收器,或者更糟糕的是,由于不干净的退出策略导致应用程序崩溃或影响用户的手机。

感谢您的建议。

4

1 回答 1

0
  1. 您无需停止活动,Android 会为您完成。使用带有标志FLAG_ACTIVITY_NO_HISTORY的意图启动您的活动,这样当用户按下回击时它们就不会出现。这些活动将在用户离开后立即停止。

  2. onStop您的每个活动的方法中,如果您想要手动解除分配内存,请编写您想要解除分配内存的任何代码,尽管这不是必需的,因为当设备内存不足时,Android 会自行解除分配。在这些onStop方法中,取消注册任何BroadcastReceiver以前注册的。

于 2013-01-20T20:11:04.410 回答