1小时后活动被破坏

时间:2014-07-20 15:38:43

标签: android android-activity android-service

我是Android开发的新手。我开发了一个Android应用程序,即使在1小时后也需要存储连接/数据。目前,我在单例类中拥有所有数据和连接(chromecast mediaplayer)。但是,当用户将应用程序放入后台大约一个小时时,活动就会被破坏,因此连接,数据等会丢失,导致我的应用程序在重新启动时崩溃。

我已经阅读了android服务,我是否可以使用这些服务来保存单例,所以即使活动被破坏,我可以在重新启动时将数据绑定回视图?

或者有没有办法确保当android决定进行清理时活动没有被销毁? 请指教

感谢。

3 个答案:

答案 0 :(得分:2)

我认为您可能会误解Android应用程序是什么。

您的应用程序是一组在单个Linux进程中运行的组件。组件在此过程中来来去去。您完全无法控制流程本身的生命周期。

你的部分问题的答案是,“是”服务将在一个看不见的活动被破坏后继续存在。

当一个Activity变得不可见时,它就会被销毁。如果你的进程没有做任何其他事情,那么这个过程也可能会被杀死。

如果您的进程也在运行服务,则它不太可能被杀死。但这不太可能。进程最终被杀死。当它发生时,你的单身人士将会消失。你无能为力。所以问题第二部分的答案是“不”。在重新启动流程时,您不能依赖服务中的单身人士

您可能会考虑使用Application对象。它的生命周期与您的过程大致相同。它不会永远存在,但只要你的应用程序的任何其他组件存在,它就会存在(除了ContentProviders)。

答案 1 :(得分:1)

听起来您希望在应用程序处于后台时保持与chromecast设备的连接。显然,服务可能会有所帮助,但我有一些可能会派上用场的评论:

  • 服务可以被系统杀死,但是根据你如何设置它们(例如onStartCommand()的返回值),它们可以由系统重新启动。当发生这种情况时,您不能指望您的动态数据仍然存在(例如您的单身人士)。你需要包含逻辑来重新创建你需要的东西(例如,重建你的单身人士)

  • 手机可以在离开一段时间后进入睡眠状态(或者用户可以锁定他/她的手机),所以当手机进入睡眠状态时,根据手机设置和手机设置,wifi会在一段时间后掉线建立在你的手机上;有些人更积极地这样做而有些人没有(即使你持有锁,它仍然可以发生)。关键是你必须假设它可能发生。即使你有服务,你的Cast连接也会因为wifi丢失而关闭,所以处理事情的正确方法不是试图一直保持连接(因为你不能)但是要有逻辑在情况合适的情况下重新建立联系。为了做到这一点,你需要保留足够的信息,以便能够将事物带到他们所处的状态。如果不应该,你的逻辑应该足够聪明,不要重新连接。

答案 2 :(得分:-1)

Android O.S可以销毁任何活动,当它资源不足时会破坏任何活动,为其他应用程序腾出更多空间。 但是你可以使用后台服务来保存你的单身人士

You can use this link to create your background service