如何知道应用程序何时在android中出现

时间:2013-06-16 19:01:49

标签: android oncreate onresume onpause


我正在开发一个Android应用程序,其中我使用tabhost作为tabbar
在每个标签中我都托管了FragmentActivity,而FragmentActivity又托管了不同的片段 我通过网络呼叫从服务器获取数据,并且在发送每个呼叫时,我将发送身份验证令牌(我首先进行登录呼叫),认证令牌在30分钟后自动过期。
现在的问题是,如果用户在应用程序中间按下主页按钮,应用程序将转到后台,如果用户再次启动应用程序,即将其带到前台(比如30分钟或更长时间),同时身份验证令牌过期然后网络呼叫失败....
我怎么知道我的应用程序什么时候来到前台???????? 我已经用Google搜索了这个问题,我现在已经解决的解决方案是

  1. 使用onCreate(),onPause(),onResume()方法,但在我的情况下,我有5个不同的选项卡,根据这个解决方案,我将不得不检查每个FragmentActivity的方法,这些方法不仅在App上被调用恢复,但也切换切片和FragmentActivities的初始创建....
  2. 我得到的第二种方法是使用ActivityManager
  3. 这两种方法都不适合我............ 我的应用程序的中间,真的需要帮助

1 个答案:

答案 0 :(得分:-1)

使用以下代码:

ActivityManager activityManager = (ActivityManager) appContext.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningTaskInfo> services = activityManager
        .getRunningTasks(Integer.MAX_VALUE);
boolean isActivityFound = false;

if (services.get(0).topActivity.getPackageName().toString()
        .equalsIgnoreCase(appContext.getPackageName().toString())) {
    // Your activity is in foreground, do what you've got to do..
}

您需要获得许可:

<uses-permission android:name="android.permission.GET_TASKS" />