2012-06-21 4 views
0

안타깝게도 Android 프로젝트에서 내부 상태의 C 라이브러리를 사용해야합니다. 라이브러리에는 상태 유지 기능 init()release()이 포함되어 있습니다. static init()release() 멤버가있는 래퍼 클래스를 작성했습니다. 그런 다음 주 활동의 OnCreate()OnDestroy()에이 메소드에 대한 호출을 각각 추가했습니다.안드로이드에서 네이티브 라이브러리 상태를 초기화하는 올바른 방법

그리고 그것이 내가 문제가되는 곳입니다. 시스템의 메모리가 부족하고 다른 활동이 포어 그라운드 인 경우 주 활동이 종료되고 release()이 호출됩니다. 따라서 이후의 모든 기본 라이브러리 호출은 눈에 띄게 실패합니다.

질문은 어떻게 주 활동이 결코 죽지 않는지 확인하는 것입니다. 아니면 활동의 콜백에서 수행하는 것보다 네이티브 함수를 호출하는 더 좋은 방법이 있을까요?

답변

0

아마도 Application 클래스를 살펴 봐야 할 것입니다. 이를 재정의하고 Manifest에 맞춤 Application 클래스를 선언 할 수 있습니다. Application 클래스의 onCreate()에서 초기화하십시오.

나는 당신의 라이브러리가 acutally 무엇을, 어쩌면 당신은 정교한 수 있습니다 확실하지 않다, 그리고 필요에 따라 당신은 또한 당신의 Activity보다 Android에 의해 사망 ​​할 확률이 적은 것 Service를 실행 고려할 수 있습니다.

+0

감사합니다.'Application'을 서브 클래 싱하는 것이 저에게 좋은 아이디어 인 것 같습니다. 도서관에 관해서는, 그것은 특별한 것이 아니라, 몇 가지 중요한 업무 처리 과정입니다. 'init()'에서는 내부 테이블을 할당하고 미리 계산합니다. – turboNOMAD

관련 문제