2011-02-18 7 views
4

액티비티 A, B, C와 액티비티 A가 포함 된 어플리케이션이 런처에서 시작되었고 B가 A와 C에서 시작되었습니다. 이제 C를 클릭하면 버튼은 액티비티 스택에서 액티비티 c의 위치를 ​​말해야합니다. Ex A-B-> C는 C가 활동 스택의 3 위치에 있음을 의미합니다. 어떻게 찾을 수 있습니까?액티비티 스택의 액티비티 위치

미리 감사드립니다.

+0

왜 이것을 알아야합니까? – Robert

답변

1

작업 방법을 설계했기 때문에이를 알 수있는 다른 방법은 없습니다. thisthis 을 참조하십시오. 따라서 솔루션은 활동을 활동 배열에 저장하여 활동을 추적 할 수 있습니다. 도움이되기를 바랍니다.

0

가능합니다.

필요한 것은 응용 프로그램을 확장하는 활동입니다. 또한 매니페스트에서 이것을 선언합니다.

Android global variable

그런 다음이 클래스 내에서 변수를 선언 :

 public static int count = 0; 

다음 각 클래스 내에서 당신은

@Override 
protected void onResume() { 
    YourApplicationClass.count++; 

} 

@Override 
protected void onPause() { 
    YourApplicationClass.count--; 
} 

이 그런 다음 당신은 모든 시간에 어떤 위치를 알고있다.

System.out.println ("개수 :"+ YourApplicationClass.count);

+0

흥미로운 아이디어. 'onStart'와'onStop'을 사용하지 않아도 되겠지요. 왜냐하면'onPause'와'onResume'은 당신이, 예를 들어'Dialog'를 보여줄 때 호출 될 것이기 때문입니다. – techiServices

+0

앱 구현에 달려 있다고 생각합니다. 탭 콘텐츠 onPause가 필요합니다. 그러나 가능하다는 것을 보여줍니다. – Blundell

1

사용 ActivityManager 유

u를 통해 UR 요구 사항

을 위해 아래의 코드를 사용하려는 활동의 위치를 ​​얻기 위해 다음 예제 코드

ActivityManager mngr = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 

List<ActivityManager.RunningTaskInfo> taskList = mngr.getRunningTasks(10); 

을 사용할 수 원하는 활동의 스택 위치를 얻을 수 있습니다

taskList.get(0).topActivity.getClassName() 

및 위치는 o (영)부터 시작하십시오.

희망이 도움이 될 것입니다.

+0

이 메소드는 더 이상 사용되지 않으며 문서에는 다음과 같은 경고가 포함됩니다 :'''이 정보는 여기에있는 정보를 기반으로 다른 행동 사이에서 결정하는 것과 같이 응용 프로그램의 핵심 로직에 사용해서는 안됩니다. 이러한 용도는 지원되지 않으며 향후' – Zach

관련 문제