繁体   English   中英

1小时后活动被破坏

[英]Activity destroyed after 1 hour

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

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

还是有一种方法可以确保当android决定进行清理时不会破坏活动? 请指教

谢谢。

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

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

您的问题部分的答案是:是的,服务将在无形活动被销毁后仍然存在。

当一个活动变得不可见时,它会被销毁。 如果您的进程没有执行其他任何操作,那么该进程也有可能被终止。

如果您的进程也正在运行服务,则将其杀死的可能性较小。 不过,可能性很小。 该过程最终被杀死。 如果这样做,您的单身人士将不复存在。 您无法采取任何措施来防止这种情况。 因此,问题第二部分的答案为“否”。 重新启动该过程时,您不能依赖服务中的单例

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

听起来好像要在后台运行应用程序时保持与chromecast设备的连接。 显然,服务可能会有所帮助,但我有一些建议可能会很方便:

  • 服务可以被系统杀死,但是根据您的设置方式(例如onStartCommand()的返回值),它们可以由系统重新启动。 发生这种情况时,您不能指望您的动态数据仍然在那里(例如您的单例)。 您需要包括重新创建所需逻辑的逻辑(例如,重建单例)

  • 手机搁置一会儿可以进入睡眠状态(或用户可以锁定手机),因此,根据手机设置和手机的构造,当手机进入睡眠状态后,wifi可能会在一段时间后掉线; 有些会更积极地执行此操作,有些则不会(即使您持有锁,它仍然可能发生)。 关键是您必须假设它可能会发生。 即使您有服务,由于wifi丢失,您的Cast连接也会中断,因此处理问题的正确方法不是试图一直保持连接状态(因为您无法这样做),而是要有逻辑在适当的情况下重新建立连接。 为了做到这一点,您需要保留足够的信息,以便能够将事物恢复到原来的状态。 您的逻辑还应该足够聪明,如果不能,则不要重新连接。

Android OS可以破坏任何活动,如果资源不足,它就会破坏任何活动以为其他应用程序腾出更多空间。 但是您可以使用后台服务来保持单身

您可以使用此链接创建后台服务

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM