Android 爱奥尼亚3应用程序重新启动而不是恢复

Android 爱奥尼亚3应用程序重新启动而不是恢复,android,cordova,ionic-framework,ionic3,Android,Cordova,Ionic Framework,Ionic3,我创建了带有两个页面的ionic应用程序,如果导航到第2页,则从第1页开始。按下“硬件后退”按钮将导航回第1页,然后再次将应用程序切换到后台。如果从后台打开应用程序,则会重新加载启动屏幕并重新启动应用程序 如何停止重新启动应用程序?您可以显示警报以确认退出应用程序。按以下方式修改app.component.ts文件 import { Platform, IonicApp } from 'ionic-angular'; constructor(public platform: Platf

我创建了带有两个页面的ionic应用程序,如果导航到第2页,则从第1页开始。按下“硬件后退”按钮将导航回第1页,然后再次将应用程序切换到后台。如果从后台打开应用程序,则会重新加载启动屏幕并重新启动应用程序


如何停止重新启动应用程序?

您可以显示警报以确认退出应用程序。按以下方式修改app.component.ts文件

  import { Platform, IonicApp } from 'ionic-angular';

  constructor(public platform: Platform, private ionicApp: IonicApp){}

  initializeApp() {
    this.platform.ready().then(() => {
      //back button handle
      this.platform.registerBackButtonAction(() => {
          if (this.navctrl.canGoBack()) {
            this.navctrl.pop();
          } else {
            this.showAlert();
          }
      });
    });
  }

  showAlert() {
    let confirm = this.alertCtrl.create({
      title: 'Exit Application?',
      message: 'Do you want to exit this application?',
      buttons: [
        {
          text: 'No',
          handler: () => {}
        },
        {
          text: 'Yes',
          handler: () => {
            navigator['app'].exitApp();
          }
        }
      ]
    });
    confirm.present();
  }

或者您可以简单地按Home按钮而不是back按钮。所以它不会重新启动你的应用程序。

正如你在评论中解释的那样,这可能会有点帮助,好吗

请按照以下步骤操作:

第一步:在您的页面上注册一个功能,在该页面中,您希望自定义暂停操作

第二步:在该自定义方法中,注册一个订阅者并调用ON PAUSE LISTENER ON,您可以在该方法中完成您的功能

假设有两个字段变量用于保存订阅服务器事件 像

在构造函数中,您可以执行类似的操作

  this.platform.ready().then(() => {
    this.platform.registerBackButtonAction(() => {


          this.sub1$=this.platform.pause.subscribe(() => {        
              console.log('****YOURPAGE PAUSED****');
            this.appMinimize.minimize();
          }); 
        });

  });
注意!!暂停事件可以多次调用,所以您也应该取消订阅!而像这样离开了页面

ionViewWillUnload() {
    this.sub1$.unsubscribe();
    this.sub2$.unsubscribe();
  }
我使用插件来最小化应用程序

在app.component.ts中

从'@ionic native/app minimize'导入{AppMinimize}; 从“离子角度”导入{App,Platform}

构造函数(平台:平台,公共应用最小化:应用最小化,公共应用:应用){ platform.ready()。然后(()=>{ 平台注册表BackButtonAction(()=>{


}

此线程已有几个月的历史,但让我也添加此解决方案

在您的app.module.ts中,将以下内容添加(或修改)到导入中:


IonicModule.forRoot(MyApp,{navExitApp:false}),
它在android系统中的常见行为是!后退按钮实际上会减少应用程序的导航堆栈!当它到达堆栈的最后一项并按下后退按钮时,会杀死应用程序的实例!再次调用时,它会重新启动!……我看不清楚这里的问题!@namrata。你愿意问ho吗w更改“在主屏幕上最小化”按钮的性质,以便在使用“在主屏幕上最小化”按钮最小化应用程序时可以完成相同的操作?因为“从主屏幕上最小化”按钮会使应用程序实例保持活动状态并恢复!而“在主屏幕上最小化”按钮会杀死该实例并restarts@Rizwanatta,是的,我想更改BackPress按钮的性质,以获得与最小化按钮相同的行为n带有HOME按钮的应用程序。在硬件备份上,我不想杀死应用程序的实例。如果我恢复应用程序,splashscreen也会重新加载检查我的答案,让我在评论中知道这是否有帮助,好吗?感谢回复,实际上我的问题是如果我在主页上,单击android硬件返回,应用程序关闭(预期行为).但从后台看,如果我再次尝试单击该应用程序,该应用程序将重新启动,并显示初始屏幕。这不是预期的行为。我可以做些什么来避免这种情况谢谢@Riwan atta,但我收到了错误::This.platform.pause()@namratasalaskar请向上投票我的答案,因为它可能会对编辑有所帮助!thnx^_^
ionViewWillUnload() {
    this.sub1$.unsubscribe();
    this.sub2$.unsubscribe();
  }
        let nav = app.getActiveNavs()[0];
        let activeView = nav.getActive();

            if (activeView.name === "Page1") {
                /** minimize the app in background **/
                this.appMinimize.minimize();
            }
            else {
                nav.pop();
        }

      });
  });