0

我有一个应用程序可以从远程服务器或它自己的缓存目录播放音频和视频文件。当我使用“home”或“back”按钮最小化我的应用程序时,它的状态会更改为 onStop()。然后,在一些空闲(20-50 分钟左右)之后,活动管理器向活动发送“不再需要”消息并关闭它。

在这种情况下,根据活动生命周期,应用程序跳转到 onCreate(图表上从 onStop() 左侧的分支)。当它发生时,我的 Activity 的表示不正确 - 带有曲目列表的片段开始加载到现有片段之上,UI 变得不可用,解决这种情况的唯一方法是完全重启应用程序。

我想有两种方法可以解决这个问题:

1) 让系统不要杀死我的应用程序(可能是不正确的,因为这种做法违反了Android中正常的应用程序生命周期并加速了电池放电)。

2)检测操作系统杀死我的应用程序并清理资源以让操作系统正确创建新活动的情况。

我认为第二种变体更可取。

有一些想法如何实施吗?有可能检测到 Android 会杀死我的应用程序并对这个动作做出反应吗?

提前致谢!

4

1 回答 1

1
  1. 如果您的应用程序创建了一个在空闲状态下什么都不做的服务,它不会消耗额外的电池,并且会固定您的进程(您还应该放置通知以使您的声明更强大)。但是无论您做什么,系统都可能在资源不足时破坏您的应用程序。请注意,您可以保证收到的唯一回调是onPause(),即使这样,如果需要太多时间才能完成,系统也会感到非常不安。如果系统绝望,所有其他调用(如 onStop() 甚至终结器)可能会被跳过。

  2. 因此,您必须遵循第二个策略 - 恕我直言,西蒙的评论实际上意味着 - 并onStart()正确处理onRestart()

于 2013-06-27T08:14:21.353 回答