1. ホーム
  2. android

[解決済み] アンドロイドアプリケーションがフォアグラウンドかどうかをチェックする?重複

2022-08-19 12:18:31

質問

この質問に対する多くの回答を見てきましたが、それはすべて単一のアクティビティに関するものです.アプリ全体がフォアグラウンドで実行されているかどうかを確認する方法は?

どのように解決するのですか?

何をしたいのか分かりませんが、現在フォアグラウンド/バックグラウンドのアプリケーションを検出するには ActivityManager.getRunningAppProcesses() を呼び出すことができます。

のようなものです。

class ForegroundCheckTask extends AsyncTask<Context, Void, Boolean> {

  @Override
  protected Boolean doInBackground(Context... params) {
    final Context context = params[0].getApplicationContext();
    return isAppOnForeground(context);
  }

  private boolean isAppOnForeground(Context context) {
    ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningAppProcessInfo> appProcesses = activityManager.getRunningAppProcesses();
    if (appProcesses == null) {
      return false;
    }
    final String packageName = context.getPackageName();
    for (RunningAppProcessInfo appProcess : appProcesses) {
      if (appProcess.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND && appProcess.processName.equals(packageName)) {
        return true;
      }
    }
    return false;
  }
}

// Use like this:
boolean foregroud = new ForegroundCheckTask().execute(context).get();

また、私が誤解していたら教えてください。

UPDATEです。 このSOの質問を見てください バックグラウンドタスクやサービスから現在のフォアグラウンドアプリケーションを決定する より多くの情報...

ありがとうございます...