【问题标题】:Android: Preventing long-initializing app from being killedAndroid:防止长时间初始化的应用程序被杀死
【发布时间】:2014-03-01 23:19:52
【问题描述】:

我一直在开发一个应用程序,它的推出时间很长。不过我有一个问题,Android 贪婪地使用它的资源,当我把它放在后台时,它喜欢杀死应用程序。这很糟糕,因为该应用实际上是作为 AI 助手而设计的,并且每次我需要使用它时都必须重新初始化,这意味着它在真实的工作环境中不会很有帮助。

我研究了防止 AI 大脑重新初始化的方法,但是,没有一种方法非常有效。保存它的大脑实例是不行的,因为她需要操作的POS模型无法序列化。并且使用服务也不起作用,因为如果我想通过服务与活动通信,我必须与活动一起重新初始化它(如果有办法解决这个问题,请纠正我,我只是注意到大多数教程都把服务.start() 在 onCreate 方法中)

有没有办法解决这个问题?我只需要保留 POS 模型。尽管只有几兆字节,但由于某种原因它们需要一段时间才能加载。

请注意,这是为了防止 data 被杀死。没有需要运行的后台进程。

【问题讨论】:

    标签: java android serialization garbage-collection savestate


    【解决方案1】:

    你需要设置一个 Notification 来告诉 Android 不要释放你的资源。

    看到这个问题:How can we prevent a Service from being killed by OS?。虽然问题本身并不直接适用,但答案与这个问题有很多重叠。

    如果你想在后台运行东西,你可能应该使用服务,因为只有在前台有布局时才应该运行活动。您可以将所需的对象存储在服务中,在(重新)启动需要它的 Activity 时根据需要获取它,并在您的 Activity 失去焦点时更新它。

    编辑:我不小心粘贴了错误的链接。现在更正了。

    另外,如果您还没有,请查看此 Android 资源:http://developer.android.com/training/basics/activity-lifecycle/recreating.html

    【讨论】:

    • 该线程与我的问题没有真正的关系,或者它回答了我提出的任何问题,但还是谢谢你。
    • 我不小心粘贴了错误的链接。现已更正。
    猜你喜欢
    • 2022-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多