Android 保存图像(经过一些处理)最佳方法

Android Saving Images(with some processing) Optimal Method

我已经从相机获取了图像,并希望在经过大约 10 秒的处理后将其保存到目录中。我尝试了以下方法:

1) Asynctask(问题:如果用户关闭(滑动)应用程序,asyncTask 将被终止)

2) Intent Service(问题:同Asynctask)

3) 前台服务(问题:挂起应用程序的 UI)

4) 运行 在 UI 线程上(问题:挂起应用程序)。

所以我的问题是我应该用什么来保存我的图像(经过一些处理),这样即使应用程序关闭并且 UI 不会挂起(冻结)也能完成所有任务。

如有任何帮助,我们将不胜感激。

您无法阻止 Android 终止您的进程。如果用户想要它被杀死(例如,使用 "force stop"),它就会被杀死。您无能为力。

当用户从最近的任务列表中滑动任务时,Android不同版本的行为是不同的(而且不同的制造商有不同的行为)。但是,在大多数情况下,托管您的应用程序(包括任何服务)的 OS 进程会被简单地杀死。如果应用程序有一个 运行 Service 想要重新启动,Android 将创建一个新的 OS 进程并重新实例化 Service 并重新启动它。

您可以通过将 Service 放在单独的 OS 进程中来稍微缓解这种情况。为此,将 android:process=":remote" 添加到 <service> 声明。在某些版本的 Android 上,从最近的任务列表中滑动任务将终止托管您的活动的 OS 进程,但不会终止托管您的 Service 的 OS 进程。

在任何情况下,您都需要使您的应用程序健壮,以便它能够处理被终止和重新启动的问题。

感谢大家的建议。我最终实现这一目标的方法是使用一个前台服务,该服务本身创建并使用 asynctask 在后台执行工作。我是新手,所以不完全知道它是如何工作的,但它不会导致任何应用程序 freezing/lag 并且即使从最近的任务列表中删除该应用程序也能正常工作。 (在 Android L(5.1.1) 和 M 中测试)