0

내 Android 앱에 JNI를 사용하는 네이티브 C 코드가 있습니다. 앱이 손상되어 다시 시작되면 원시 코드의 전역 변수 값이 변경되지 않거나 초기화되지 않은 상태로 유지됩니다. 이 전역 변수는 선언 지점에서 NULL로 설정되지만 그 값은 이전과 동일합니다.Android 활동이 파괴되었지만 원시 코드의 전역 변수 값은 여전히 ​​남아 있습니다. 왜?

AVFormatContext *gFormatCtx = NULL; 

int openMovie(const char filePath[]) 
{ 
    if (gFormatCtx != NULL) // <- here, gFormatCtx is not null when the app is started at the second time. And its value is same as it was of first run. 
     return -1; 
} 

네이티브 코드의 프로세스가 죽지 않는다고 생각합니다. 왜 이런 일이 일어 났습니까?

답변

1

활동 내역 프로세스가 아닐 수 있습니다. 프로세스 컨테이너를 죽이지 않고 활동을 파괴하는 것이 일반적입니다. 이런 식으로 귀하의 글로벌 프로세스 상태는 유지됩니다. 필요에 따라 정리하려면 활동주기 이벤트에 응답해야합니다.

관련 문제