ActivityManager.getRunningTasks – устаревший андроид

Я работаю над push-уведомлением в android, где я использую метод ниже, чтобы показать уведомление, но проблема в том, что теперь ActivityManager.getRunningTasks (1); устаревает. Из одного вопроса stackoverflow я читал, что: «вы можете использовать getAppTasks() возвращая List где вы можете получить RecentTaskInfo с getTaskInfo », но я не могу понять, как его использовать. Пожалуйста, помогите мне здесь в этом отношении.

 private void postNotification(Context ctx, Intent intent) { try { if (intent == null) { Log.d(TAG, "Receiver intent null"); } else { String action = intent.getAction(); if (action.equals("com.ziza.cy.UPDATE_STATUS")) { JSONObject json = new JSONObject(intent.getExtras() .getString("com.parse.Data")); String type = json.getString("type"); if (type.equals("AlertNotification")) { String msg = json.getString("header"); String title = "ncy"; ActivityManager am = (ActivityManager) ctx .getSystemService(Context.ACTIVITY_SERVICE); List taskInfo = am.getRunningTasks(1); ComponentName componentInfo = taskInfo.get(0).topActivity; // don't show notification if app is in foreground if (componentInfo.getPackageName().equalsIgnoreCase( ctx.getPackageName())) { // send broadcast receiver Intent intentBroad = new Intent(); intentBroad.setAction(Constants.sNOTIFICATION); intentBroad.putExtra("msg", msg); intentBroad.putExtra("title", title + " " + taskInfo.get(0).topActivity.getClass() .getSimpleName()); ctx.sendBroadcast(intentBroad); } else { // Activity Not Running // Generate Notification Intent intnt = new Intent(ctx, LogInActivity.class); PendingIntent contentIntent = PendingIntent .getActivity(ctx, 0, intnt, 0); intnt.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); NotificationCompat.Builder builder = new NotificationCompat.Builder( ctx) .setContentTitle(title) .setContentText(msg) .setTicker(msg) .setSound( RingtoneManager .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)) .setStyle( new NotificationCompat.BigTextStyle() .bigText(msg)) .setAutoCancel(true) .setSmallIcon(R.drawable.iconed) .setOnlyAlertOnce(true) .setDefaults(Notification.DEFAULT_VIBRATE); Uri alarmSound = RingtoneManager .getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); builder.setSound(alarmSound); builder.setContentIntent(contentIntent); NotificationManager notificationManager = (NotificationManager) ctx .getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0, builder.build()); } } } } } catch (JSONException e) { Log.d(TAG, "JSONException: " + e.getMessage()); } } 

    Это должно помочь вам приступить к работе

     ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List tasks = activityManager.getAppTasks(); for (ActivityManager.AppTask task : tasks) { Log.d(TAG, "stackId: " + task.getTaskInfo().stackId); } 

    Это должно работать на устройствах pre Lollipop, а также на устройствах Lollipop

     public static boolean isBackgroundRunning(Context context) { ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List 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())) { //If your app is the process in foreground, then it's not in running in background return false; } } } } return true; } 

    Изменить: он должен возвращать true, если приложение находится в фоновом режиме, а не наоборот

    Можете ли вы этого:

     /*** * Checking Whether any Activity of Application is running or not * @param context * @return */ public static boolean isForeground(Context context) { // Get the Activity Manager ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); // Get a list of running tasks, we are only interested in the last one, // the top most so we give a 1 as parameter so we only get the topmost. List task = manager.getRunningAppProcesses(); // Get the info we need for comparison. ComponentName componentInfo = task.get(0).importanceReasonComponent; // Check if it matches our package name. if(componentInfo.getPackageName().equals(context.getPackageName())) return true; // If not then our app is not on the foreground. return false; } 
    Давайте будем гением компьютера.