0

我有一个FragmentActivity. 在其onPause功能范围内,我想区分

  • 按下主页按钮
  • 按下返回按钮
  • 启动一个新活动(这将导致片段活动onPause被调用)

对于按下后退按钮的情况,我知道我可以通过使用来区分它this.isFinishing() == true

但是,启动一个新的活动案例怎么样?

我知道也许我可以在启动新活动之前设置一个标志,并在onPause功能结束时重置标志。但是,这对我来说听起来并不优雅。有没有更好更健壮的方法?

4

1 回答 1

0

您可以创建一个单例类来跟踪您的活动何时开始/恢复/暂停/停止。创建一个基 Activity 类,在其每个生命周期回调中调用单例。

如果您在活动之间转换时查看回调的顺序,您应该会看到:

Pause Activity A
Create Activity B
Start Activity B
Resume Activity B
Stop Activity A

当您的单例从 Activity A 的 onStop() 调用时,您可以检查是否有来自另一个 Activity(显然属于您的应用程序)的 onResume() 调用。如果没有,您就知道用户已更改应用程序或返回主屏幕。

至于后退按钮按下,您可以检查isFinishing(),或覆盖Activity.onBackPressed()并在那里做你的簿记。

于 2013-04-11T03:29:19.210 回答