【发布时间】:2012-08-13 17:22:56
【问题描述】:
我正在使用 CPP,我想实现超时机制。
表单示例,名为“foo()”的函数,它只会在超时后触发一个函数执行并返回。
为什么我需要这个?
我有一个 Android 应用程序,它使用一个 CPP 库(使用 JNI 接口),在该库中有一些函数需要时间来处理。我不能在单独的线程中调用这些函数(从 java 或 CPP 作为 lib 限制),因此我在 android 应用程序中得到 ANR。
所以我将做什么,我将使用 JNI 调用 CPP 层中的一个函数,该函数将启动一个计时器并返回,以便 android 中的 UI 线程不会给出 ANR,当这个计时器超时时,它会调用那个时间函数,当处理完成时,它将通知 java 层。
我应该如何实现这个?
【问题讨论】:
-
这个问题应该有帮助:stackoverflow.com/questions/879896/…
-
有什么办法可以在cpp中实现定时器,超时时会出现一个函数。
-
为什么你“不能在单独的线程中调用这些函数”?你不能没有线程。如果这是一个耗时且不可中断的进程,您可以在主线程(并获得 ANR)或另一个线程中执行它。如果您的执行在计时器上触发,它要么已经是一个单独的线程(计时器在其中计时),要么计时器将向某个线程发出信号。它也可以向主线程发出信号,但是你没有解决方案。
标签: android c++ c java-native-interface