我正在开发一个聊天应用程序,我正在暂停和恢复活动中使用。
document.addEventListener('暂停',暂停,false);
document.addEventListener(' resume',onresume,false);
当我打开应用程序并按下主屏幕按钮到Android手机时,此活动非常完美。 但我的问题是,在聊天应用程序中,当我选择浏览按钮电话图像库时,我从图库发送文件附件,同时暂停事件是火。当我在图像库中没有选择任何图像时,当我点击主页按钮时,同一事件没有被触发。因此,如何在从库中选择文件时阻止暂停事件。
在 ionic v1 中还有其他方法吗?或者我如何在暂停和恢复活动中开火。
答案 0 :(得分:2)
我写了一个小服务来解决这个问题:
import {Injectable} from '@angular/core';
import {Subject} from "rxjs/Subject";
@Injectable()
export class EventService {
protected resumeHalted = false;
protected resumeSubject = new Subject<any>();
protected resumeListener = () => {
if (this.resumeHalted) {
return;
}
this.resumeSubject.next();
};
constructor() {
document.addEventListener('resume', this.resumeListener);
}
haltResume() {
this.resumeHalted = true;
}
continueResume() {
this.resumeHalted = false;
}
resume() {
return this.resumeSubject;
}
}
图库电话也包含在服务中。每次我打电话,我都会停止&#34;事件和&#34;继续&#34;在用户交互完成后:
getPicture(options: CameraOptions) {
let subject = new Subject<any>();
this.eventService.haltResume();
this.camera.getPicture(options).then((path) => {
// ...
subject.next();
subject.complete();
this.eventService.continueResume();
}, () => {
this.eventService.continueResume();
});
return subject.asObservable();
}
最后一步:我没有收听简历活动,而是订阅简历Oberservable:
this.eventService.resume().subscribe(() => {
this.statusBar.hide();
});
答案 1 :(得分:1)
You can remove the pause event before you open the gallery and reattach the event on the gallery's callback.
document.removeEventListener("pause", myFunction);
答案 2 :(得分:1)
我不确定您是否正在使用Ionic 1或2,但对于这两个版本,您都有生命周期事件。
以下是Ionic 2的内容(向下滚动到&#34; Lifecycle events&#34;) https://ionicframework.com/docs/api/navigation/NavController/
以下是Ionic 1的产品 https://forum.ionicframework.com/t/order-of-lifecycle-events/28251/2