Merhaba Arkadaşlar,
Uygulama geliştirirken uygulamamızın arka planda çalışması gereken durumlar olabilir.Bunun için genel olarak Service Class ları kullanırız. Uygulamamız kapansa bile arka planda kendisi otomatik açılır ve çalışmasına devam eder. Service class’lar ile ilgili detaylı dersimi Service Class bulabilirsiniz.
Mesala bir PUSH Notification geldi ama biz uygulamamız ön planda açıksa göstermek istemiyoruz.Peki böyle bir durumda uygulamamızın arka planda olup olmadığını programsal olarak nasıl anlayacağız.
Öncelikle gerekli izini vereceğiz.
Aşağıdaki methoddan true değeri dönüyorsa uygulamamız arka plandadır.
///////// private boolean isAppIsInBackground(Context context) { boolean isInBackground = true; ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) { if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { for (String activeProcess : processInfo.pkgList) { if (activeProcess.equals(context.getPackageName())) { isInBackground = false; } } } } } else { List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); ComponentName componentInfo = taskInfo.get(0).topActivity; if (componentInfo.getPackageName().equals(context.getPackageName())) { isInBackground = false; } } return isInBackground; }
Kaynak : www.androidhive.info