2014-02-16 3 views
0

나는 3 액티비티 : MainActivity, MovieActivity 및 ActorActivity 있습니다.Android 액티비티 전환 앞뒤로

저는 Android에 익숙하지 않아 여러 활동을 시작하지 않고 메모리가 부족한지 확인하여 각 활동 간의 전환을 구현하는 방법을 이해하려고합니다.

MainActivity (목록 영화) ---> MovieActivity가 동영상을 클릭에 시작하고 당신이 배우를 클릭하면 ---> ActorActivity가 시작 배우를 표시합니다 여기

는 사용자가 통과 수있는 시나리오입니다.

이제 배우 액티비티에서는 배우가 별표가있는 영화 목록을 표시하므로 사용자는 현재 액터 활동에 있었던 동일한 영화로 돌아갈 수 있습니다. 그리고 이것은 영원히 앞뒤로 계속되거나 기본적으로 영화와 배우 액티비티를 계속해서 전환 할 수 있습니다.

MovieActivity 및 ActorActivity의 부모 작업을 MainActivity로 설정 했으므로 언제든지 맨 위 버튼을 누르면 모든 동영상이 나열됩니다.

이 시나리오를 처리하는 가장 좋은 방법은 무엇입니까? 사용자가 뒤로 버튼을 눌렀을 때 나는 등 트레이스가 MovieA < -> ActorA라면 앞뒤로 10 번 말하면 이상적인 동작이 무엇인지 잘 모릅니다.

답변

0

아래의 코드는 뒤로 가기 버튼에서 사용할 수 있습니다.

@Override 
     public void onBackPressed() { 

      Intent i = new Intent(currentactivity, targaetactivity); 
      startActivity(i); 
     } 
0

수동으로 기록을 저장하고 돌아 가기까지 의미있는 대기 시간을 찾을 수 있습니다. MovieA/ActorA/MovieB/ActorB의 루프가 없으면 이전 화면으로 돌아갑니다. 그런 다음 onBackPressed 메소드를 수동으로 구현하십시오. 다른 방법으로 전환 할 때 활동을 끝내고 활동 매개 변수를 스택에 저장하면됩니다.

0

새로운 세부 정보 페이지로 전환 할 때 이전 세부 정보를 추적하여 새 활동에 추가로 전달할 수 있습니다 (예 : 배우 -> 영화에서 이동할 때 배우의 이름을 의도 추가). 그런 다음 사용자가 영화 페이지에서 액터 페이지로 전환하려는 경우이를 비교하여 이전 액터와 동일한 액터 (추가로 전달 된 액터)인지 확인할 수 있습니다. 그렇다면 새로운 Activity를 실행하는 대신 finish()으로 전화하면 이전의 Actor 세부 정보 페이지로 돌아갑니다.

이런 식으로 말도 안되는 루프 (A-> B-> A-> B) 비트가 사용자가 A-> B-> D-> E-> T-> Q 그가 원하는 것은.

+0

데이비드에게 감사합니다. 이것은 논리적으로 보이며 제가가는 가장 좋은 경로 일 수 있습니다. 구현하고 어떻게 진행되는지 살펴 보겠습니다. 관련 메모에서 의도를 사용하여 새로운 활동을 계속 시작하고 점점 더 많은 메모리를 소비하지 않게 되나요? 시간이 지남에 따라 내 앱의 메모리 사용량을 확인할 수있는 쉬운 방법이 있습니까? 예를 들어 언급 한 바와 같이 사용자가 A -> B -> D -> E -> T -> Q로 100 레벨을 내린다면 백 스택이 그렇게 깊은 레벨을 유지합니까? MainActivity A로 돌아 가야합니다.) 모든 성능 고려 사항을 염두에 두어야합니까? 모든 도움을 주셔서 감사합니다! – falc0nit3

+0

새 활동 인스턴스를 작성할 때마다 메모리를 소비합니다. 얼마나 프로그래밍했는지에 따라 많이 다르며 Views에 무엇이 있는지에 따라 다릅니다. 'Debug' 클래스의 다양한 메소드를 사용하여 메모리 사용량을 추적 할 수 있습니다. 예, 백 스택은 100 레벨 이상의 활동을 추적하지만,이 경우 너무 많은 메모리를 소비하게 될 수 있습니다. 앱이 충돌합니다. 이 "백 스택"을 직접 관리하고 무한히 새 Activity 인스턴스를 계속 생성하지 않는 것이 더 합리적 일 수 있습니다. –