android - 超时后CPP调用函数

标签 android c++ c java-native-interface

我正在使用CPP,我想实现超时机制。
例如,函数名为“foo()”,它只会触发一个函数在超时后执行,然后返回。

为什么我需要这个?

我有一个 Android 应用程序,它使用一个 CPP 库(使用 JNI 接口(interface)),该库中有一些函数需要时间来处理。我无法在单独的线程中调用这些函数(无论是来自java还是CPP作为lib限制),因此我在android应用程序中得到ANR。

所以我会做什么,我将使用 JNI 调用 CPP 层中的一个函数,该函数将启动一个计时器并返回,以便 android 中的 UI 线程不会给出 ANR,并且当该计时器超时时,它将调用该时间函数,当处理完成时,它会通知java层。

我应该如何实现这个?

最佳答案

在您的 native C++ 代码中,您还可以使用 POSIX 计时器和任何其他 POSIX 函数:

http://www.kernel.org/doc/man-pages/online/pages/man2/timer_create.2.html

为了促进许多标准任务(计时器、线程、套接字等),您可能需要考虑使用 boost图书馆。但这需要一点研究。 boost 没有官方的 Android 端口。但是有如何构建 boost 的说明,例如这本书 http://www.wowebook.be/book/android-ndk-beginners-guide/#

关于android - 超时后CPP调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12002778/

相关文章:

java - 无法在主类扩展 ListFragment 的情况下使用 spinner.setAdapter

c++ - 调试和 Release模式下的不同结果

c - 在 C 中向内存写入和读取不同类型

c - 全局变量问题

c - 如何从输入创建邻接矩阵?

java - 如何在java android中给出 'for loop'的时间间隔

android - 如何将 JSON 数据存储到 Realm 中并将其显示到 recyclerview 中

c++ - std::cin 限制不能输入 LPCSTR

android - 使用 mpandroidchart 2.0.7 隐藏边框

c++ - tellp 在空 ostringstream 上的标准行为