3

在我没有 C 语言经验的前提下,我想解决一个不允许我继续发布我的应用程序的问题。

我有一个使用 ffmeg 进行文件转换的本机函数,我通过 AsyncTask 从 Android 调用它。

我需要停止本机功能,并尝试了几种方式:

1)我在 C 中创建了一个函数“deleteRutine”,它重置所有变量。(不工作)

2)我添加了转换布尔变量的功能,并通过Android的方法将其设置为false(不工作)

我还能尝试什么?有什么建议吗?

4

2 回答 2

2

正如 rui.araujo 所提到的,如果实施得当,第二种方法应该可以工作。

您从 Android 传递到本机函数的布尔值,打印它并检查它是否正确传递。大多数情况下,您的 JNI 方法实现中可能存在问题,因为您的代码标志没有被修改。

你的代码应该是这样的:

while(FLAG==true)
{
     //Do Your task
}
return;

如果实施得当,这肯定会起作用。我在许多类似的情况下都使用过它。如果仍然存在问题,请编辑您的帖子并发布第二个实现的代码片段...

于 2012-05-08T05:02:37.943 回答
0

如果您使用的是交叉编译的 ffmpeg 二进制文件,则本机方法应在转换完成后立即返回。如果需要停止它的最佳方法是使用: http: //developer.android.com/reference/android/os/Process.html向它发送退出信号,因为它会正确完成/关闭它正在转换的文件。

于 2012-11-09T17:26:21.823 回答