如何为任务找到最顶层的活动?

时间:2011-09-11 18:35:49

标签: android

我有一个应用程序,我在后台运行一个计时器事件,检查是否不活动。当一段时间过去之后,我想调用finish()方法来处理我的应用程序(任务)当前最重要的任何活动。请注意,我的应用程序可以在后台,因此我不能只使用设备上最活跃的活动。我的问题是找到我的任务的最顶层活动,然后调用该活动的finish()方法。下面是我正在使用的Runnable计时器的片段。我的片段中的“活动”变量是我似乎找不到的东西。

mUpdateTimeTask = new Runnable() 
{
  public void run() 
  {
     // - for every 10 seconds, this runnable task will check the inactivity time and will exit this app
     //   if the time allocated is exceeded

     long longNowTime = System.currentTimeMillis()/1000;

     if ( longNowTime-globalVariables.longLastActivityTime >= globalVariables.intLockoutDuration )
     {                 
         // - first, we'll stop the lockout timer from running

         mHandler.removeCallbacks(mUpdateTimeTask);

         // - call the finish() method to close the top most activity for this task (app)

         activity.finish();
     }

     mHandler.postDelayed(this,mIntInterval);
  }
};

任何人都可以提供一些建议,告诉我如何获取最活跃的Activity对象,并调用finish()方法关闭它?

感谢。

1 个答案:

答案 0 :(得分:1)

使用常见的onPause和onResume方法创建一个公共超类的所有活动子类,这些方法维护一个“TopmostActivity”变量,可能作为超类的静态字段。