2011-03-31 7 views
0

파일 시스템 (폴더 또는 파일 당 하나의 활동, 검색 활동 등)을 가로 지르는 여러 활동을 만드는 앱이 있습니다. 이 앱은 [뒤로]로 갈 때 가끔 충돌합니다. 추적 로그는 onCreate (...)에서 충돌이 발생했음을 나타냅니다.이 활동은 활동이 파괴되었으며 돌아갈 때 재생성 중임을 나타냅니다. 이것은 활동 스택에서 앞으로 이동할 때 인 텐트를 통해 데이터를 전달하기 때문에 (즉, 일반 폴더 탐색) 문제가됩니다. 여기 Android - 여러 활동, 활성 상태 유지 및 상태 저장?

내가 무엇을 얻을 수 있습니다 :

ERROR/AndroidRuntime (978)에 의해 발생 : java.lang.NullPointerException이 Folder.onCreate (Folder.java:155)

ERROR/AndroidRuntime (978) : android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1049) ERROR/AndroidRuntime (978)에서 : android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2627)에서 ...

파일 시스템 브라우저처럼 작동하는 응용 프로그램에서 메모리, 여러 (심지어 0-100?) 활동을 처리하고 돌아가는 등의 가장 좋은 방법은 무엇입니까?

감사합니다.

편집 : 가능하면 활동을 계속 사용하거나 한 활동에서 다른 활동으로 이동하는 모양과 느낌을 유지하는 방법을 찾고 싶습니다. 활동 수를 최소화하는 방법에 대한 조언을 얻을 수 있다면 이상적입니다 (예 : 데이터 저장, 오프 스크린 활동 닫기, 다시 호출되는 활동이 필요하더라도 [back] 애니메이션 보존 등). 재현). 감사.

답변

2

모든 디렉토리 탐색에 대해 새 활동을 사용하지 마십시오. 많은 자원을 낭비합니다. 대신 파일 브라우저로 작동하는 하나의 활동을 보유하고 사용자가 뒤로 버튼을 치는 순간 기본 동작을 무시할 때 자신의 상태 (현재의 정규화 된 경로) 만 유지하면됩니다. onBackPressed()

onBackPressed 메서드가 트리거되면 상태 (전체 경로)를 취할 수 있고 단순히 디렉터리 수준을 이동할 수 있습니다.

간단하고 효율적이며 깨끗합니다.

+0

감사합니다.하지만 가지고있는 앱은 클라우드 기반 서비스에서로드 된 디렉토리 정보가 파일 열기/표시, 사용자가 파일 등을 검색 할 수 있어야합니다. 응용 프로그램은 지금이 모든 작업을 수행하지만 각 작업은 자체 활동이며 활동은 서로의 데이터를 전달합니다. 따라서 하나가 닫히면 null 포인터가됩니다. 액티비티 액티비티 애니메이션 등을 유지하면서 viewflipper 또는 유사한 것을 사용할 수 있습니까? 감사. – RyanM

+0

나는 아직도 많은 활동을 사용하지 않을 것입니다. 앱을 디렉토리 브라우저, 파일 뷰어 및 검색이라는 세 가지 구성 요소로 나눌 수 있습니다. 각 구성 요소는 하나의 인스턴스 만 필요로하고 인 텐트에'FLAG_ACTIVITY_CLEAR_TOP'과'FLAG_ACTIVITY_SINGLE_TOP' 세트를 사용하여이를 달성 할 수 있습니다. – smith324

+0

감사합니다.하지만 활동 전환 애니메이션을 보존하고 싶습니다. 그래서 계속해서 활동을 사용하겠습니다. 오픈 액티비티가 많더라도 앱에서 14MB 이상의 RAM을 사용하는 것을 본 적이 없으며 SoftReference는 사용 된 모든 비트 맵/드로어 블을 사용하므로 메모리 오류가 발생하지 않습니다. – RyanM