我有一個與cpp ndk lib的Android應用程序。該庫基於名爲Main的對象。 Main.cpp的:NDK架構
static Main * instance;
Java_my_package_MainService_initMain()
{
instance = new Main(); //OK
}
應用的JAVA部分啓動的服務,初始化主CPP對象的服務,然後開始一個活動(我希望服務在後臺做的東西,而有時會出現運行是用戶的UI)。當我從新活動中調用lib時,Main對象爲null。
我在做什麼錯? 謝謝,那鴻
我想出了一些東西:服務啓動活動後,垃圾收集器清理它並卸載lib。所以我想真正的問題是,爲什麼服務不能繼續運行? – nmnir 2012-02-01 13:59:38
該分析不正確。垃圾收集器不會卸載JNI庫,實際上目前你甚至不能明確地卸載它們。但是,如果進程終止並被替換,您可能會得到一個新的進程,它從未加載過庫,或者加載了庫,但從未被告知初始化您似乎試圖用作單例的靜態變量。 – 2014-04-11 20:00:47