2012-09-29 4 views
2

활동의 이벤트에 등록하는 방법이 있습니까? 필자는 onStart/onStop 이벤트에 특별히 관심이 있으며이를위한 특별한 작업을 추가하고 싶지 않습니다. 다른 활동의 라이프 사이클에서 이벤트를 얻을활동의 이벤트 등록

+0

가 다른 클래스에서 의미합니까? – DiogoNeves

+0

나는 그렇게 생각한다. 내게 어리석은 질문이다. 내가 확인하자. – DiogoNeves

+0

나는 activity에 대해 registerComponentCallbacks (callback)에 대해 생각하고 있었지만, 정말로 필요한 것은 아니다 ... – DiogoNeves

답변

1

한 가지 방법은 당신이 관심있는 Activity의 주요 Application 인스턴스와 필터 이벤트가있는 Application.ActivityLifecycleCallbacks로 클래스를 등록하는 것입니다.

이 짧은 예이다 (MainActivity.onCreate이 아닌 다른 메소드/클래스의 콜백을 등록하고 싶거나 그 메시지를 놓칠 수 있습니다.)

스파이 활동을 할 때 :

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // Register a spy for this activity 
     getApplication().registerActivityLifecycleCallbacks(new ActivitySpy(this)); 
    } 
} 
당신이 수행 할 작업에 대한 참조가있는 경우 당신은 또한 다른 장소에서 스파이를 등록 할 수 있습니다

public class ActivitySpy implements ActivityLifecycleCallbacks { 

    private final Activity mActivity; 

    public ActivitySpy(Activity activity) { 
     mActivity = activity; 
    } 

    @Override 
    public void onActivityCreated(Activity activity, Bundle savedInstanceState) { 
     if (mActivity == activity) 
      Log.i("SPY", "Activity Created"); 
    } 

    @Override 
    public void onActivityDestroyed(Activity activity) { 
     if (mActivity == activity) 
      Log.i("SPY", "Activity Destroyed"); 
    } 

    // (...) Other overrides 

} 

:

그런 다음 스파이 코드가 같이 보입니다.

나는이 도움이 되었으면 좋겠 :)

편집 : 내가 얘기를 깜빡 했네요, 이것은 단지 API 레벨 14 이상에서 작동합니다 ...

관련 문제