阻止Android关闭我的服务/线程

时间:2012-07-22 12:53:23

标签: android

我有一个应用程序,它在后台使用服务来执行一些上传/下载操作。 这些操作可能需要一些时间,具体取决于用户选择(文件的数量和大小)。

使用我的设备(nexus s)和测试模拟器时,所有工作都按计划进行,我收到用户的报告,有时在选择上传/下载大数据时操作会卡住。

使用在后台服务中运行的线程完成操作。我的猜测是操作系统有时会在内存不足的设备上杀死线程和/或服务。

在服务onStartCommand()函数中,我提出了将执行操作的线程(要处理的数据在intent中),然后我返回START_NOT_STICKY。 在我使用startService(i)的活动中,没有进行任何绑定。

如何防止这种情况?如何确保系统不会杀死我的服务或线程?

1 个答案:

答案 0 :(得分:1)

使用startForeground()可能有助于您实现目标。

来自docs:

  

启动的服务可以使用startForeground(int,Notification)API   将服务置于系统考虑的前台状态   它是用户积极意识到的东西,因此不是   当内存不足时被杀的候选人。 (理论上还是如此   可能会在极端记忆压力下杀死该服务   从当前的前台应用程序,但在实践中这应该   不要担心。)