【问题标题】:Android - running app from home screen vs running from task managerAndroid - 从主屏幕运行应用程序与从任务管理器运行
【发布时间】:2018-02-02 13:27:00
【问题描述】:

我想知道从主屏幕(应用程序图标)运行 android 应用程序与从任务管理器运行它有什么区别。每当我从主屏幕运行它时,我都会在短时间内看到启动画面,但在那之后我会被转发到最新的应用程序状态。从任务管理器运行它时的唯一区别是我看不到启动画面。这种行为背后有什么合理的解释吗?有时从主屏幕(应用程序图标)运行应用程序时,它会永远挂在启动屏幕上,我无法以任何方式调试它...

【问题讨论】:

  • Byit hangs on splash screen forever and I am unable to debug it in any way,这很正常,您只需要等待Android加载您的应用即可。 Xamarin.Android 需要 mono 来运行它的 c# 代码,mono 需要 JVM 来加载,所以它在启动屏幕上比 Native Android 需要更多的时间。
  • 是的,你是对的,但有时返回应用程序比第一次运行它需要更多的时间。这就是让我烦恼的地方。

标签: android xamarin xamarin.forms


【解决方案1】:

您需要知道 Activity 的生命周期,例如 @FabriBertani 拥有 said。通过生命周期方法可以看到Activity的生命周期:

OnCreate -> OnStart -> OnResume -> OnPause -> OnStop -> OnDestroy

这是 Activity 的正常生命周期。


从主屏幕和任务管理器有几个类别

从主屏幕运行 android 应用程序

  • 如果该应用最近已在您的设备中运行,则表示Android Warm Start

  • 如果您的设备最近没有运行该应用,则表示Android冷启动,因此我们通常使用splash screen来处理它。

从任务管理器运行安卓应用

  • 由于资源不足,您的应用处于后台,已被系统杀死。
  • 您的应用处于后台,尚未被系统杀死。

这种行为背后有什么合理的解释吗?

是的。从你的情况来看,应该是Android Cold Start并且没有被杀死

  • Android冷启动会从零开始创建一个App,所以会调用:OnCreate->OnStart->OnResume,在调用Activity的OnCreate之前,需要创建一个App需要的环境,所以你会看到启动画面。如果我们不设置自定义启动画面,您将在看到最新的应用程序状态之前看到白屏或黑屏。
  • 从任务管理器运行应用程序(未被杀死)确实从零创建了一个应用程序。如果你按下 Home 键 而不是Back Button,你的应用将在最近的应用中,它会调用:OnPause -> OnStop,当你从任务管理器运行应用时,它会call:OnRestart -> OnStart -> OnResume,所以你看不到启动画面。

【讨论】:

  • 这解释了很多。谢谢。
【解决方案2】:

这是因为当您从主屏幕启动应用程序时,应用程序会重新启动而不是恢复。你可以在这里找到这个行为的解释App restarts rather than resumes

【讨论】:

  • 但它看起来不像重新启动,因为它回到了我离开它的地方。或者也许我只是不理解“重启”我应该的方式。对我来说,重新开始就是我从头开始一切。因此,当我从屏幕 A 移动到 B 时,重新启动应该指向屏幕 A,而不是 B。不过,感谢您提供的链接,它解释了很多。
  • 阅读这个:Android Activity Lifecycle,试着了解所有的 Android 生命周期状态,你的问题就有答案了 ;-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-19
  • 1970-01-01
相关资源
最近更新 更多