2012-07-23 73 views
0

我想檢測和計數,當Activity從背景到前景(當活動是可見的,增加計數)。我試圖使用標誌在onPause()onResume()像這樣:如何檢測和計數當活動從背景到前景

void onPause(){ 
    flag = true; 
} 

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

} 

它的工作原理,當用戶按下home鍵,將重新啓動應用程序,但是當我轉移Activity然後返回,但它仍然增加了計數,因爲它調用的onPause()。如何防止呢?或者有沒有數據呢?

回答

3

使用此方法來檢查wheter應用程序被帶到後臺:

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" />