J'ai un service android qui utilise une bibliothèque native via NDK/JNI. La bibliothèque native est statiquement chargé/initialisé comme l'a suggéré ...L'appel à JNI se bloque après le redémarrage du service android?
static {
System.loadLibrary("mylibrary");
if (!nativeClassInit())
throw new RuntimeException("native init failed");
}
Tout fonctionne bien jusqu'à ce que le service est arrêté (par exemple, d'une activité d'assurance-chômage où le service peut être démarré/arrêté). Le problème est lorsque le service est arrêté la tâche n'a pas encore été tué par android et si l'utilisateur redémarre le service les bibliothèques natives ne sont pas rechargées et un appel à une fonction native provoque un plantage dans le code natif?
J'ai essayé à nouveau d'appeler la méthode nativeClassInit() après un redémarrage mais cela n'aide pas? En outre, j'ai vu dans d'autres messages que le déchargement de la bibliothèque native n'est pas autorisé dans Android.
Qu'est-ce que le code natif essaie de faire lorsqu'il se bloque, et quelle est l'erreur? –
Conservez-vous certains pointeurs JNI (JniENV, jobject-s, etc.) du côté natif entre les redémarrages du Service? – ognian