【问题标题】:android: Activity needs to be minimized or hidden, how to keep it aliveandroid:Activity需要最小化或隐藏,如何保持活动状态
【发布时间】: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


    【解决方案1】:

    Service 可以检查 Activity 是否正在运行(通过 IBinder)并启动一个新的 Activity,以防它被杀死,请参阅我的回复 here 以获得有关此教程的链接。

    另一种可能性是创建一个引用 Activity 和 Service 的 Application 对象,您可以使用它来管理您的需求。应用程序比活动更不可能被杀死。无论如何,如果它被杀死,这一切都归结为重新启动您的活动。使用 saveInstance() 从 Activity 中保存您需要的任何数据(参见 this question

    【讨论】:

    • Aleadam,感谢您的链接。请查看添加到问题中的 indo。你是说使用 IBinder,并将其与活动绑定,直到服务运行,活动不会进入暂停阶段更长的时间,即我所担心的有点错误???
    猜你喜欢
    • 1970-01-01
    • 2014-02-08
    • 2020-11-27
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多