我有一个C库,可以通过NDK访问。一些操作非常耗时,因此UI线程冻结了它们。正如我现在普遍的做法是使用Runnable的那样:如何解决NDK库调用冻结UI线程的问题
myFixedThreadPool.execute(new Runnable()
{
public void run()
{
NativeClass.callToNDKLibrary();
};
});
或螺纹类似:
Thread t = new Thread()
{
public void run()
{
NativeClass.callToNDKLibrary();
}
};
t.start();
但问题是,C库不是线程安全的:在启动时崩溃我这样包裹它。所以问题是如何从UI线程分离,仍然强制NDK调用一次运行一个。可能有一些与同步技巧将有助于?我也想提一下,这个库是我的应用程序的核心底层,而不仅仅是一个辅助函数。所以它几乎被我的代码的每一部分调用。只有少数几个函数会消耗时间,大多数函数都会将它们保留在主线程中。
谢谢,它给了我一个线索从哪里开始思考。 – 2010-11-16 22:52:00