如何检测和计算活动何时从背景到前景

时间:2012-07-23 08:04:46

标签: android android-activity

我想检测并计算Activity从背景到前景的时间(当活动可见,增加计数时)。我试图在onPause()onResume()中使用标记,如下所示:

void onPause(){
    flag = true;
}

void onResume(){
if(flag){
 //save to shared reference.  
   saveCount(getCount(count) + 1);
 flag = false;
}

}

当用户按下home键并重新启动应用时,它会起作用,但当我转移Activity然后返回时,它仍会增加计数,因为它会调用onPause()。怎么预防?或者无论如何要计算这个?

1 个答案:

答案 0 :(得分:3)

使用此方法检查应用是否带到后台:

private boolean isApplicationBroughtToBackground(Context context) {
    ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
            return true;
        }
    }

    return false;
}

它需要GET_TASKS权限:

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