2013-04-14 2 views
0

거의 1 년 동안 NDK를 사용한 후 안드로이드의 프로세스 수명주기가 활동 수명주기와 다르다는 것을 알게되었습니다.Android Activity Lifecycle vs. Process Lifecycle

더 구체적으로, 내 기본 라이브러리가 OnCreate에로드되고 있지만 onDestroy에서는 언로드되지 않습니다 (네이티브 라이브러리를 언로드 할 수 있는지 여부는 아직 알지 못합니다). 그러나 다음 OnCreate에서 여전히 동일합니다 프로세스이므로 내 기본 라이브러리의 모든 전역 변수는 상태가 보존 된 채로 살아 있습니다. 이것은 Java의 정적 변수에서도 마찬가지입니다.

이것은 안드로이드 2.3에서 꽤 좋았지 만, 최근에 안드로이드 4.2.2에 도착했고, 나는 정말로 이상한 것을 발견했습니다. 이제는 프로세스가 종료 된 후 onRestart()를 호출하는 것이 가능합니다 (또는 로그를 읽음으로써 가정하는 것입니다). 정직하기 때문에 이상합니다. 왜냐하면 onCreate가 프로세스가 끝난 직후에 호출 될 것이라고 가정하기 때문입니다. 인스턴스화되었지만 프로세스가 아닌 "활동"에서 생각하기 때문에 그는 다른 탭을 유지합니다. 기본적으로 내 앱 중 하나를 아주 오랜 시간 (예 : 1 시간 이상) 일시 중지하고 돌아 오면 충돌이 발생합니다. 장치 로그에서

발췌 :

04-14 04:41:34.886 2376 2376 I am_on_paused_called: [0,com.re3.benchmark.AboutActivity] 
04-14 05:06:26.128 386 594 I am_proc_died: [0,2376,com.re3.benchmark] 
04-14 13:19:44.256 386 538 I am_proc_start:[0,4761,10062,com.re3.benchmark,activity,com.re3.benchmark/.AboutActivity] 
04-14 13:19:44.295 386 595 I am_proc_bound: [0,4761,com.re3.benchmark] 
04-14 13:19:44.397 386 595 I configuration_changed: 5248 
04-14 13:19:44.459 386 595 I am_restart_activity: [0,1115347592,8,com.re3.benchmark/.AboutActivity] 
04-14 13:19:44.701 4761 4761 I am_on_resume_called: [0,com.re3.benchmark.AboutActivity] 
04-14 13:19:44.881 386 401 I am_activity_launch_time: [0,1115347592,com.re3.benchmark/.AboutActivity,631,631] 
04-14 13:19:52.725 386 595 I am_crash: [4761,0,com.re3.benchmark,8961606,java.lang.NullPointerException,NULL,REFramework.java,330] 
04-14 13:19:52.725 386 595 I am_finish_activity: [0,1115347592,8,com.re3.benchmark/.AboutActivity,crashed] 
04-14 13:19:52.772 386 595 I am_pause_activity: [0,1115347592,com.re3.benchmark/.AboutActivity] 

PS : 나는 충돌이 내 코드에서 유래하지만, 내 코드는 정말 전체 과정에서 호출되는 첫 번째 함수 인 onRestart 처리하지 않습니다 실현 할 (inCreate가 먼저 호출되기를 기대하기 때문에 내 기본 라이브러리 초기화를 건너 뜁니다.

답변

1

아마도 Application.onCreate에 기본 라이브러리를로드해야하며 Activity이 아니어야합니다.

1 개 이상인 경우 Activity 만 표시되고 현재 보이는 것이 생성되고 처음으로 Activity에 lib를로드하는 경우이 시점에서로드되지 않습니다.

+0

네, 동의하지만 AboutActivity에서 MainActivity로 갈 때 실제로 추락했습니다. AboutActivity는 일부 텍스트 만 표시하고 기본 lib와 상호 작용하지 않습니다. 가끔은 내가 MainActivity에서 lib를로드 할 때 열어 둔다. 그리고 내가 다시 시작했을 때, 충돌하고, ok를 누른다. 이상한 일은 onCreate와 stuff로 이번에 앱을 다시 시작한다는 것이다. 일반적으로 앱이 다운되면 다시 시작되지 않습니다. – RelativeGames