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

标签 android android-asynctask android-service foreground-service

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

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

2) Intent Service(问题:同Asynctask)

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

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

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

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

最佳答案

您无法阻止 Android 终止您的进程。如果用户想要它被杀死(例如,使用“强制停止”),它就会被杀死。您无能为力。

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

您可以通过将 Service在一个单独的操作系统进程中。为此,添加 android:process=":remote"<service>声明。在某些版本的 Android 上,从最近的任务列表中滑动任务将终止托管您的 Activity 的操作系统进程,但不会终止托管您的 Service 的操作系统进程。 .

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

关于Android保存图像(经过一些处理)最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41029372/

相关文章:

java - Android TextView 类型不起作用

android - 强制 Proguard 给类中的每个方法一个唯一的名称?

android - 从 AsyncTask 更新 Activity 中的进度对话框

android - 如何模拟一个服务被Android系统杀死

android - 我如何一直运行服务?

android - 如何在 Bundle 中发送自定义对象的 ArrayList

java - 如何将此模块添加到我的 Android Studio 项目中?

android - 如何有效地列出目录中的所有文件,包括子目录?

带有包含 Button onClickListener 的 ListView 的 Android AsyncTask

Android Messenger 应用程序使用服务