我已从相机获取图像,并希望在经过一些约10秒的处理后将其保存到目录中。我尝试了以下方法:
1)Asynctask(问题:如果用户关闭(滑动)应用程序,则会杀死asyncTask)
2)意图服务(问题:与Asynctask相同)
3)前台服务(问题:挂起应用程序的UI)
4)在UI线程上运行(问题:挂起应用程序)。
所以我的问题是我应该使用什么来保存我的图像(通过一些处理),这样即使应用程序关闭且UI没有挂起(冻结),所有任务也都完成了。
任何帮助都将不胜感激。
答案 0 :(得分:2)
您无法阻止Android终止您的进程。如果用户希望它被杀死(例如,使用“强制停止”),它将被杀死。你无能为力。
当用户从最近的任务列表中滑动任务时,不同版本的Android中的行为会有所不同(并且不同的制造商也会有不同的行为)。但是,在大多数情况下,托管您的应用程序(包括任何服务)的操作系统进程都会被杀死。如果应用程序有一个想要重新启动的运行Service
,Android将创建一个新的操作系统进程并重新实例化Service
并重新启动它。
您可以将Service
置于单独的操作系统进程中,从而缓解此问题。为此,请将android:process=":remote"
添加到<service>
声明中。在某些版本的Android上,从最近的任务列表中滑动任务将终止托管您的活动的操作系统进程,但不会终止托管您Service
的操作系统进程。
在任何情况下,您都需要使应用程序健壮,以便它可以处理被杀死和重新启动。
答案 1 :(得分:0)
感谢大家的建议。我最终能够实现这一目标的方法是使用自己创建的前台服务和asynctask来在后台执行工作。我是一个新手,所以不知道它是如何工作的,但它不会导致任何应用程序冻结/滞后,即使应用程序从最近的任务列表中刷过也能完成工作。 (在Android L(5.1.1)和M中测试)