私が知るしようとしている私の、あるいは全くBroadcastReceiverから次のコードを使用して、フォアグラウンドのアプリケーション:フォアグラウンドで私のAndroidアプリがどのように検出されますか?
boolean inForeground = false;
ActivityManager actMngr = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> runningAppProcesses = actMngr.getRunningAppProcesses();
for (RunningAppProcessInfo pi : runningAppProcesses) {
if (context.getPackageName().equals(pi.processName)) {
inForeground = pi.importance == RunningAppProcessInfo.IMPORTANCE_FOREGROUND;
}
}
しかし、このコードは常に真、バックグラウンドでも、私のアプリケーションを返します。
if (actMngr.getRunningTasks(1).get(0).topActivity.getPackageName().equals(context.getPackageName())){
Log.d(TAG, "My");
} else {
Log.d(TAG, "Not my");
}
は、このコードが正しいかどうか: 私は次の解決策を見つけましたか? または、誰かがもっとシンプルな変種を知っていますか? ありがとう!
あなたの2番目の解決策はほぼ正しいと私は思います。 'get(0)'によって返されたRunningTaskInfoの 'numRunning'フラグをチェックする必要があります。一番上のアクティビティが停止され、持続される可能性があります。 –