En mi aplicación, las tostadas en cola aparecen una y otra vez cuando la aplicación entra en el fondo, así que lo hice para resolver el problema.
Agregue el código para detectar cuando la aplicación entra en el fondo. Una forma de registrar el controlador del ciclo de vida. Para más detalles ref
registerActivityLifecycleCallbacks(new MyLifecycleHandler());
App.inBackground = true;
cuando la aplicación va a fondo y mostrar tostadas usando la clase SmartToast
public class SmartToast {
static ArrayList<WeakReference<Toast>> toasts = new ArrayList<>();
public static void showToast(@NonNull Context context,@NonNull String message){
//this will not allowed to show toast when app in background
if(App.inBackground) return;
Toast toast = Toast.makeText(context,message,Toast.LENGTH_SHORT);
toasts.add(new WeakReference<>(toast));
toast.show();
//clean up WeakReference objects itself
ArrayList<WeakReference<Toast>> nullToasts = new ArrayList<>();
for (WeakReference<Toast> weakToast : toasts) {
if(weakToast.get() == null) nullToasts.add(weakToast);
}
toasts.remove(nullToasts);
}
public static void cancelAll(){
for (WeakReference<Toast> weakToast : toasts) {
if(weakToast.get() != null) weakToast.get().cancel();
}
toasts.clear();
}
}
llamada SmartToast.cancelAll();
método cuando entra en aplicación de fondo para ocultar tostadas pendientes actuales y todos. El código es divertido ¡Disfrutar!
+1 me consiguió por 4 segundos;) –