我想检测并计算Activity
从背景到前景的时间(当活动可见,增加计数时)。我试图在onPause()
和onResume()
中使用标记,如下所示:
void onPause(){
flag = true;
}
void onResume(){
if(flag){
//save to shared reference.
saveCount(getCount(count) + 1);
flag = false;
}
}
当用户按下home
键并重新启动应用时,它会起作用,但当我转移Activity
然后返回时,它仍会增加计数,因为它会调用onPause()。怎么预防?或者无论如何要计算这个?
答案 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" />