2012-07-11 2 views
0

현재 활동에 도달하려고합니다. 아래의 코드는 다른 예제에서 가져온 것입니다. 편집 후 현재 활동의 정확한 이름이 있습니다. 하지만 거기에서 실제 인스턴스를 얻으려면 어떻게해야합니까?클래스 이름에서 인스턴스 가져 오기

 ActivityManager am = (ActivityManager) this.getSystemService(ACTIVITY_SERVICE); 

    // get the info from the currently running task 
    List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); 

    ComponentName componentInfo = taskInfo.get(0).topActivity; 

     // this is the class-name 
    componentInfo.getClassName(); 

고맙습니다, 마커스 당신은에서는 MyApplication의 활동의 인스턴스를 저장 할 수 있습니다

+2

이 코드를 실행하는 클래스는 Context 유형이며, 이미 Context에서 파생 된 Activity 일 가능성이 큽니다. "this"가 현재 활동의 인스턴스가 아닌 이유는 무엇입니까? –

+0

실제로, myApplication (응용 프로그램을 확장)에서 현재 활동에 대한 참조를 반환하므로 활동 대신 도우미 클래스에서 사용할 수 있습니다. –

+0

그건 좋은 생각 같지는 않습니다. 액티비티는 일시적이므로 실제 컨텍스트에서 실행되지 않는 한 한 문에서 다음 문으로 넘어 가지 않도록해야합니다. 나는 당신이 다른 클래스에 액세스하고있는 메소드/데이터를 분석 할 필요가 있다고 생각합니다. 평생 동안 당신은 더 많은 제어를 할 수 있습니다. 아마도 서비스 나 (더 논쟁의 여지가있는) 싱글 톤입니다. –

답변

0

. 활동이 onResume()에 도달 할 때마다 현재 활성 활동을 업데이트 할 수 있습니다. 그러나 Rupert Rawnsley가 말했듯이, 여러분의 메소드를 다른 곳 (Service, Singleton, Application)에 두는 것이 낫습니다.

헬퍼 클래스에서 활동을 사용할 계획이라면 컨텍스트 만 필요합니다. 이 경우 많은 경우 응용 프로그램 컨텍스트를 사용할 수도 있습니다. 그렇지 않으면 코드 재구성에 대해 생각할 수 있습니다.

관련 문제