Требование:
- Автоматический выход из приложения через определенное время (5 минут или 10 минут).
- Во время выхода из системы необходимо проверять любые обнаруженные изменения измененийв нашем приложении.
- Если да, не нужно выходить из приложения, иначе мы выйдем из приложения.
У меня есть Google, но выйти, даже если я изменяюсь в приложении.
import {Observable, Subject, Subscription, BehaviorSubject} из 'rxjs / rx';
@ Component({selector: 'app-root', templateUrl: './app.component.html', changeDetection: ChangeDetectionStrategy.OnPush})
private _timeoutSeconds: number = 15;
private timerSubscription: Subscription;
private timer: Observable<number>;
private resetOnTrigger: boolean = false;
public timeoutExpired: Subject<number> = new Subject<number>();
constructor(
public router: Router,
private cd: ChangeDetectorRef) {
this.timeoutExpired.subscribe(n => {
alert("logout");
});
this.startTimer();
}
public startTimer() {
if (this.timerSubscription) {
this.timerSubscription.unsubscribe();
}
this.timer = Observable.timer(this._timeoutSeconds * 1000);
this.timerSubscription = this.timer.subscribe(n => {
this.timerComplete(n);
});
}
public stopTimer() {
console.log(this.cd + " " + "stop timer");
this.timerSubscription.unsubscribe();
}
public resetTimer() {
console.log(this.cd + " " + "reset timer");
if (this.timerSubscription) {
this.timerSubscription.unsubscribe();
}
this.timer = Observable.timer(this._timeoutSeconds * 1000);
this.timerSubscription = this.timer.subscribe(n => {
this.timerComplete(n);
});
}
private timerComplete(n: number) {
console.log(this.cd.detectChanges() + " " + "timer complete");
this.timeoutExpired.next(++this._count);
this.resetTimer();
if (this.resetOnTrigger) {
this.startTimer();
}
}