2012-05-18 2 views
3

내 응용 프로그램이 오랜 시간 (예 : 시간) 일시 중지되었을 때 가장 일반적으로 UnsatisfiedLinkErrors를 재생산하기가 쉽지 않습니다. 이러한 에러는 통상 동작하는 JNI 호출로 발생합니다.일시적인 Android NDK UnsatisfiedLinkError

Android는 애플리케이션을 완전히 닫지 않고 라이브러리를 언로드 할 때가 있습니까? 하나의 활동에 내 기본 라이브러리를로드하고 다른 활동에도이 라이브러리를 사용합니다. Android가 라이브러리를로드하고로드 해제 한 활동을 파괴 한 후이를 사용하는 다른 활동이 재개 될 때 라이브러리를 다시로드하지 못했습니다. 이 같은 활동으로 라이브러리를로드

+0

활동의 "재개"가 라이브러리가 처음로드 된 동일한 프로세스에서 발생하는지 (프로세스 ID를 확인하여) 결정할 수 있습니까? 내 의혹은 이력서가 결코로드되지 않은 새로운 프로세스에서 발생하고 있다는 것입니다. –

+0

이것이 사실이라고 가정하면, 새 프로세스에서 어떤 활동이 처음 시작되는지에 관계없이 라이브러리가 정확히 한 번로드되도록하는 올바른 방법은 무엇입니까? – pbsurf

+0

단순히 필요한 모든 활동에로드하는 방법은 어떻습니까? http://java.sun.com/docs/books/jni/html/design.html "System.loadLibrary에 대한 이전 호출이 이미 동일한 기본 라이브러리를로드 한 경우 System.loadLibrary가 자동으로 완료됩니다." –

답변

1

매번,

static { 
     System.loadLibrary("gamescript"); 
    }  

그런 다음 라이브러리는 로컬 정적 멤버와 같은 활동 클래스 내에서로드 앱이 살아 때까지 언로드되지 않습니다. 그러나 그것이 수업 외부에서 액세스 할 수 있는지 의문입니다.

+0

짐을 실제로 내던진한다는 증거가 있습니까? –

+0

@ChrisStratton 죄송합니다. 초기 진술은 잘못되었습니다. 지적 해 주셔서 고마워요. – codetiger

+0

정적 멤버는 영구 생성 섹션에 저장됩니다. http://stackoverflow.com/a/3800592/409315 – codetiger