在iOS上,什么时候是Platform.Ready被解雇了?

时间:2018-05-24 15:23:19

标签: cordova ionic-framework ionic3

我知道在加载应用程序时,platform.ready会触发,暂停后打开应用程序时会触发platform.resume。

但是,应用程序加载而不是恢复时,应用程序是否有一定的时间没有被使用?如果是这样,iOS和Android的时间是多少?

似乎无法找到关于此的任何信息,并希望了解这一点,谢谢!

1 个答案:

答案 0 :(得分:2)

TLDR:如果应用来自后台,我们通常会收到resume个事件。

如果操作系统内存不足,可能会完全清除应用,我们会收到deviceready事件。我不知道应用程序被操作系统终止后有任何时间限制,这应该只会发生,如果操作系统内存不足,重新启动或者用户手动终止应用程序。

通过查看event docs,我们可以看到Cordova应用的典型生命周期:

  1. 用户启动应用,一旦Cordova满载,就会触发deviceready event
  2. 如果用户切换到另一个应用,则原生平台会将应用程序置于后台并pause event触发。
  3. 如果用户回到我们的应用程序,该应用程序将再次由本机平台置于前台。那是resume event发射的那一刻。
  4. 要回答您的实际问题,我们必须查看每个本机平台的实现。第一个iOS。

    iOS应用具有以下执行状态(来源:developer.apple.com): iOS execution states

    因此,放在后台的应用程序将被置于后台模式,其描述如下:

      

    应用程序在后台并执行代码。大多数应用都会输入此   简要说明他们被暂停的方式。但是,一个应用程序   请求额外执行时间可能会在此状态下保持一段时间   时间。 ...

    假设我们的应用程序没有在后台/请求中运行,额外的执行时间将仅暂时保持此模式,然后进入暂停模式。

    暂停模式的描述如下(重点是我的):

      

    该应用程序位于后台,但未执行代码。系统   将应用程序自动移动到此状态,并且之前不会通知它们   这样做。暂停时,应用程序仍保留在内存中但不会   执行任何代码。

         

    当内存不足时,系统可能会清除挂起状态   应用程序,恕不另行通知为前台应用程序腾出更多空间。

    几乎同样适用于Android。 Android活动的生命周期稍微复杂一些,您可以在developer.android.com上查找详细信息。底线与iOS(Source)相同:

      

    系统在需要释放RAM时杀死进程

    因此,如果操作系统内存不足,可能会完全清除我们的应用程序,我们的生命周期将从deviceready事件开始。我不知道应用程序被操作系统终止后有任何时间限制,这应该只会发生,如果操作系统内存不足,重新启动或者用户手动终止应用程序。