【发布时间】:2011-08-26 05:36:00
【问题描述】:
我有一个应用程序,其 Activity 的目的是连接到服务器,保持和监视连接,并在断开连接时通知用户。 Activity 有其他对话框及其 UI 以及在连接和监视连接时运行的服务。服务仅从 te UI 线程启动和停止。
我的查询:一旦建立连接,服务将启动并且活动将被隐藏。从生命周期中我可以理解隐藏它将进入 onPause() 阶段。然后,如果设备需要内存,它可以杀死我的活动。如果连接没有建立,我可以让它被杀死,但如果建立了,那么我不希望它在用户不知情的情况下被杀死。
如何隐藏活动? 我怎样才能阻止它被杀死?或者如果它被杀死了如何通知用户。 如果活动被杀死,服务的条件是什么。我不认为你也会被杀。这在重新启动应用程序时变得不匹配。
编辑信息: 感谢@indyfromoz 和 Aleadam, @Aleadam,我查看了所有这些链接,这有助于我很好地理解和开发我的服务。 我确实将服务与活动绑定,并且服务具有返回给活动的存根,并且根据需要,服务将消息发送到活动 - 在某些消息上,只有活动会通知用户,但服务会将消息通知给活动。其次,另一个 AsyncTask 也在运行,它也会定期通知活动。如果任何连接丢失,Activity 将处理以再次启动该任务/服务通知用户。到目前为止,我已经做到了这一点,但我只是担心会扼杀活动。 Service 和 ASyncTask 将运行并通知用户,但 UI 不会一直显示在顶部,因此将处于 onPause 阶段。如果在内存不足的情况下系统会杀死活动,那么?
您是否尝试说如果服务已绑定并且通知将继续进行,那么活动将不会被杀死,因为它虽然不可见但仍处于活动状态?我有点困惑,担心并且不清楚他们是否有任何要求来处理我的申请的这个阶段。如果是这样,如何?为了更好地理解,下面给出了我的应用流程。
流程: 活动开始 一些输入、验证、UI等 启动和绑定服务 - startService(bindIntent); bindService(bindIntent, sevConn, flag); 服务启动/绑定成功? start AstncTask : Re-Try & inform(重试限制)
AsyncTask 已启动 现在 UI 不需要在最上面,后台工作正在进行中
AsyncTask 和 Service 都提供由 Activity 中的处理程序处理的通知。在任何向用户显示的 sp msg 上,可能还会显示 UI。
谢谢
【问题讨论】:
标签: android android-activity kill