Android应用程序/进程的生命周期?

Posted

技术标签:

【中文标题】Android应用程序/进程的生命周期?【英文标题】:Life cycle of Android Application/process? 【发布时间】:2014-05-12 10:55:03 【问题描述】:

我正在编写一个安卓应用程序。在应用程序中有 4 个活动。所有活动都是相互独立的。


在我的应用程序中,我想使用套接字通信和服务。它们都在第一个活动启动时启动,并在最后一个活动退出时停止。启动活动是预设的,所以启动没有问题。但最后一个活动是随机的。在这种情况下,我应该如何停止服务并关闭套接字? “应用程序”退出时是否有任何回调?我看过android活动的生命周期,但它并没有说明整个过程......

【问题讨论】:

【参考方案1】:

如何将 AIDL 接口用于服务并让每个活动注册/取消注册。然后让服务计数活动活动的数量,当计数器达到零时关闭套接字并退出。

【讨论】:

【参考方案2】:

onCreate 和 onDestroy - 包含应用程序的整个生命周期。当应用程序加载到内存或从内存中卸载时,会调用该对。这两个括号涵盖了活动的整个生命周期。当它第一次加载时触发 onCreate 并且当应用程序被处理时触发 onDestroy。您显然必须使用这两者来设置和销毁应用程序整个生命周期所需的资源 - 尽管实际上事情可能更加微妙。系统可以在不调用 onDestroy 的情况下停止应用,并且可以触发 onCreate 事件重新启动应用。

onStart 和 onStop - 将应用可见的任何时段括起来。可能是该应用程序落后于一个模态对话框。该应用程序是可见的,但不与用户交互。这对事件可以在应用程序的整个生命周期内多次触发。简单的应用程序大多可以忽略 onStart 和 onStop 事件,因为应用程序仍在内存中并且不会丢失任何资源或状态。 onStart 和 onStop 的主要用途是让应用程序有机会在不与用户交互的情况下监控可能影响它的任何更改。更令人困惑的是,onRestart 事件也发生在 onStart 事件之前,但前提是这不是应用程序第一次触发 onStart - 这是真正的重启。

onResume 和 onPause - 将应用程序处于前台并与用户交互的时间段括起来。同样,这对事件在整个生命周期中可能会发生多次。 onResume 事件发生在应用程序处于前台并执行其通常工作时。例如,当用户切换到另一个应用程序时,就会发生 onPause 事件。

您可以在这次冒险中学到很多关于生命周期的知识:看看吧:http://www.i-programmer.info/programming/android/5966-android-adventures-lifecycle-and-state.html

编辑:

也许这会对你有所帮助:How to handle activity life cycle involving sockets in Android?

这里有一个很好的使用指南: http://tacticalnuclearstrike.com/2011/03/a-way-of-using-sockets-in-android/

【讨论】:

onDestroy 并不总是被调用 抱歉 - 请仔细阅读 - 我编辑了一个问题,回答了“如何在 android 中处理套接字”你总是有一个 MainActivity,你可以在那里覆盖 onDestroy @Domi 这就是我所做的......问题是,当活动发生变化时,套接字会被创建和销毁。我想让整个应用程序单次打开和单次关闭.. 您可以使用函数 isFinishing() 检查您的应用程序是否正在完成 - 这样您就可以销毁您的套接字。 ***.com/questions/5227071/…

以上是关于Android应用程序/进程的生命周期?的主要内容,如果未能解决你的问题,请参考以下文章

Android——应用进程和应用生命周期

Android——应用进程和应用生命周期

Android——应用进程和应用生命周期

Android——应用进程和应用生命周期

Android应用程序/进程的生命周期?

Android-Android中service与application的生命周期有关系吗