在后台运行本机代码

时间:2014-01-28 13:05:04

标签: android opencv android-ndk native

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

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

我的问题是,这是真的吗?如何在保持主活动在前台活动并且本机代码在后台运行的同时从主活动运行本机代码?

谢谢你们!

2 个答案:

答案 0 :(得分:4)

  

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

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

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

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

NativeActivity用于拥有完全无Java的应用程序。你不必这样做。

答案 1 :(得分:2)

Android支持pthread到large extent。您可以在代码中使用pthread_create()及其亲属。