在后台运行本机代码

bon*_*nko 5 android opencv native android-ndk

我使用OpenCV和Android NDK制作了图像处理应用程序。现在,我想在主要活动中显示结果,该活动是包含基于本地图像处理应用程序的一些数据和图形的仪表板。

我环顾四周,发现本机代码仅可作为活动(NativeActivity类)运行,这是我目前的方法,其中主要活动被本机活动reference#1的空白屏幕代替。

我的问题是,这是真的吗?如何在主要活动中将我的本机代码运行在前台,而将本机代码在后台中运行?

多谢你们!

Sev*_*yev 4

我环顾四周,发现本机代码只能作为活动运行

不。任何 Java 类都可以在 Android 中拥有本机方法。您可以有一个后台工作线程,作为Thread派生类或实现Runnable,它将通过调用本机方法来完成后台工作。

pthreads 是另一种可能性,但这些线程对于 Java 子系统是不可见的;您可能希望从工作线程调用 Java 代码 - 至少将某些内容传递回 UI 线程。如果工作线程首先是在 Java 中启动的,那就更容易了。

根据记录,Android 服务不是线程。它们在主线程上运行。线程可以从服务启动,但也可以从活动启动。线程的生命周期取决于你。

NativeActivity 是为了拥有完全不含 Java 的应用程序。你不必遵循这种方式。