我有一個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