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()が呼び出されるため、カウントが増加します。それを防ぐ方法は?それとも、これを数える方法はありますか?

4

1 に答える 1

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" />
于 2012-07-23T08:07:50.167 に答える