Problema de Android 6.0 Marshmallow UsageStatsManager al intentar recuperar la aplicación en primer plano

Cada vez que intento consultar las estadísticas de uso de UsageStatsManager, puedo obtener correctamente la última aplicación en ejecución. Sin embargo, si abro la barra de estado y hay una nueva notificación, la última aplicación utilizada (basada en UsageStats) cambiará a la de la notificación. Como resultado, recibo falsas alarmas de que la aplicación en primer plano ha cambiado.

Parece que no puedo encontrar una manera de filtrar esos sorteos específicos. ¿Algunas ideas?

En este momento, busco la aplicación en primer plano con el siguiente código. El problema solo existe en Marshmallow (5.X funciona correctamente).

UsageStatsManager mUsageStatsManager = (UsageStatsManager) rotationManager.getSystemService("usagestats");
long time = System.currentTimeMillis();
// We get usage stats for the last 10 seconds
List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 2, time);
// Sort the stats by the last time used
if (stats != null) {
SortedMap<Long, UsageStats> mySortedMap = new TreeMap<Long, UsageStats>();
for (UsageStats usageStats : stats) {
    mySortedMap.put(usageStats.getLastTimeUsed(), usageStats);
}
if (mySortedMap != null && !mySortedMap.isEmpty()) {
    foregroundApp = mySortedMap.get(mySortedMap.lastKey()).getPackageName();
} 
}

Respuestas a la pregunta(3)

Su respuesta a la pregunta