如何检测哪些活动导致我的活动onPause

时间:2013-04-16 05:18:58

标签: android

我遇到了一个棘手的问题,我必须知道是谁导致我的活动变为背景。我的意思是如果调用我的活动onPause方法,我必须知道onResume会有哪些其他活动。

3 个答案:

答案 0 :(得分:1)

查看ActivityManager的getRunningTasks以获取其他应用程序中最近启动的活动的列表。

  

公开   名单   getRunningTasks(int maxNum)

     

返回任务列表   目前正在运行,最多   最近是第一个和更早的   按顺序注意“跑步”   并不意味着任何任务的代码   目前正在加载或活动 -   任务可能已被冻结   系统,以便可以重新启动   它的下一个带来的先前状态   到前台。

当然,您可能希望使用标记 RECENT_WITH_EXCLUDED 来确保您获得所有活动,甚至是有意将自己从该列表中排除的活动。

  

public static final int RECENT_WITH_EXCLUDED

     

在API级别1标记中添加,用于getRecentTasks(int, int):   返回所有任务,即使那些设置了他们的任务   FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS旗帜。

此外,如果主屏幕未显示在该列表中,您可能必须在用户按下home button时跟踪该主屏幕。

答案 1 :(得分:0)

你检查了这个吗?

enter image description here

你的回答:

支持我在我的android项目中有两个活动。 activityA ActivityB

目前ActivityA正在运行。

时,ActivityA进入后台(onPaush)
  1. 从activityA
  2. 转到ActivityB
  3. Presh主页按钮
  4. 任何其他活动来到地上(例如:将来电告知您的设备)
  5. 以上是可能 avtivityA在onPaush ,任何其他活动都在onResume

    所以,屏幕上显示的Activity是onResume。

    希望,你明白......

答案 2 :(得分:0)

在您的活动内部使用两个静态标志(一个用于活动转到后台,另一个用于存储是活动调用, 使用这些变量,

static boolean isActivityCalled=false;
static boolean isGoesToBackGround=false;
@Override
publivc void onResume()
{
   if(isActivityCalled&&isGoesToBackGround)
   {
      //Application is resumes not from other activity
      isActivityCalled=false;
      isGoesToBackGround=false;
   }
}
@Override
public void onUserLeaveHint()
{
    super.onUserLeaveHint();
    isGoesToBackGround=true;
}

当调用任何活动,然后设置isActivityCalled=true;时,这是所有设备转到后台的唯一方法(单击主页按钮和睡眠时)..