我正在开发一个图像处理 Android 应用程序。假设您有一个 C++ 单例对象,它提供了一些耗时的函数并分配了自己的内存。此外,C++ 库还将提供一些其他功能,这些功能也会执行一些耗时的工作。此函数将由单例对象调用。他们可以分配自己的临时内存(将在函数终止时释放)并且需要与单例对象交换数据。工作流程如下:
- 加载本地 C++ 库,创建单例对象(它将分配内存并从资产目录加载数据)。
- 用户,使用应用程序界面,选择图像并加载它
- 图像被传递给将计算一些信息的单例对象
- 用户可以请求特定的图像处理算法,要求单例对象调用相应的函数
- 如果用户加载另一个图像,则从 4 重复或转到 2(将重置单例对象(在步骤 1 中分配的内存将保留到应用程序终止))。
第 2 步和第 3 步是应用程序中最耗时的部分。我希望用户能够在时间过长时停止当前处理,并且应用程序在耗时的处理算法期间保持响应。执行此应用程序的最简单方法是调用本机函数并等待,但这可能会阻塞 UI。另一种方法是设计这些函数来检查每 N 个处理像素的标志,以了解该函数是否必须停止(这将允许我在它发生时释放内存)。第三种选择可能是使用 java 线程,但是如何使用呢?