'Ionic 3 pause and resume events triggering multiple times in Android

I am facing strange issue in ionic 3 pause and resume events, whenever I paused the application, events are calling multiple times(once 2, once 3 etc). Here is the code

 this.platform.ready().then(() => {
  this.platform.pause.subscribe(() => {        
      console.log('****UserdashboardPage PAUSED****');
  });  
  this.platform.resume.subscribe(() => {      
      console.log('****UserdashboardPage RESUMED****');
  });
});

I have tried by placing the same code in ionViewDidLoad, Constructor, ionViewWillEnter still facing same issue. Please anybody help me to get resolve this. I'm calling one service once the app is resumed but now its calling multiple times.Thanks!!



Solution 1:[1]

It is calling multiple times becuase every time you pause or resume the application it will subscribe to platform. you need to unsubscribe to platform as following

private sub1$:any;
private sub2$:any;

this.platform.ready().then(() => {
  this.sub1$=this.platform.pause.subscribe(() => {        
      console.log('****UserdashboardPage PAUSED****');
  });  
  this.sub2$=this.platform.resume.subscribe(() => {      
      console.log('****UserdashboardPage RESUMED****');
  });
});

ionViewWillUnload() {
    this.sub1$.unsubscribe();
    this.sub2$.unsubscribe();
  }

I hope it will work.

Solution 2:[2]

import { Platform } from '@ionic/angular';
import { Component } from '@angular/core';
import { Subscription } from 'rxjs';


@Component({
  selector: 'app-tab1',
  templateUrl: 'tab1.page.html',
  styleUrls: ['tab1.page.scss']
})
export class Tab1Page {


  constructor(private platform:Platform) {}
  resumeListener:Subscription=new Subscription();
ionViewWillEnter() {
  this.resumeListener=this.platform.resume.subscribe(()=>{
    console.log("resume")

  })
}

  ionViewWillLeave() {
    this.resumeListener.unsubscribe();
  
  }

}

it will work even if you have multiple tab same thing you can do with pause event

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Borad Akash
Solution 2 Raphaël Balet