2014-04-24 2 views
3

동일한 Android 스택을 사용하는 2 가지 활동이 있습니다. 즉 동일한 백 스택을 사용합니다.Android 작업의 가시성 변경을 파악하는 방법은 무엇입니까?

백 스택의 첫 번째 액티비티 A과 백 스택의 두 번째 액티비티 B을 호출합니다.

경우 1 :AA 전경에 있었고, 다음 B (이것은 외부 의도를 받았기 때문에 같은, 어떤 이유로) 전경에 올 때 백그라운드에서가는 것을 통지됩니다.

경우 2 :AA 포 그라운드에서했지만 다른 응용 프로그램이 포 그라운드에서 시작되었을 때 백그라운드에서가는 것을 통지됩니다.

질문 : 내 앱은 두 경우를 어떻게 구분합니까? 전환 A in foreground -> A in background이 현재 작업을 화면에 계속 표시하는지 알 수있는 방법이 있습니까?

기본적으로 안드로이드 작업이 표시되거나 보이지 않을 때 이벤트를 가져와야합니다. 활동 수명주기

+0

왜 차별화 하시겠습니까?'B'가 호출 될 때 백 스택을 인수해야한다는 것을 알기에 충분하지 않습니까? – Terry

+0

나는 우리가 사건 1에 있다는 것을 안다면 뭔가를하는 것을 피하려고한다. 기본적으로 내가 추적하고 싶은 것은 Android 작업의 가시성이다. – Vincent

+1

OP는 다른 앱 (동일한 앱) 또는 다른 앱이 포 그라운드로 들어와 앱의 활동이 백그라운드로 전환 될 때를 알기를 원합니다. –

답변

3

, 당신의 활동 AA이 일시 정지 된 후 활동 B이 활성화되지 않을 경우 다른 일을 할 것입니다.

우선, 더 이상 볼 수없는 활동이 무언가를하도록하는 것은 좋지 않습니다. Android 라이프 사이클에서 볼 수 있듯이 중지 될 수 있습니다. enter image description here

나는 백그라운드 코드를 서비스에 넣습니다. 이 서비스는 활동 A 또는 B이 일시 중지되거나 다시 시작될 때마다 알림을받습니다. 거기서 당신은 당신의 논리를 시작할 때까지 약간의 타임 아웃을 추가 할 수 있습니다.

그런 일이 것 당신이 경우에, 있음 :

사례 1 : A 배경으로가는 당신의 서비스에 onPause 처리기에서 메시지를 전송 활동. 서비스가 제한 시간 타이머를 시작합니다. 액티비티 B이 시작되고 서비스의 onResume 핸들러에 메시지를 보냅니다.

이제는 서비스가 여전히 동일한 활동이며 그에 따라 작동한다는 것을 알게됩니다.

사례 2 : 활동 A이 백그라운드로 들어가 메시지를 보냅니다. 서비스가 제한 시간 타이머를 시작합니다. 그것은 시간 초과 (나는 200ms 정도면 충분하다고 생각한다.) 이제 당신의 서비스는 더 이상 활동이 활발하지 못하다는 것을 안다.

+0

입니다. 내가 +1 한 답을 보내 주셔서 감사합니다. 이 솔루션은 현재 우리가 구현 한 솔루션입니다. 이 접근 방식의 문제점은 타임 아웃 지연 후에 만 ​​발생하는 것을 알 수 있다는 것입니다. 나는 그것을하는 더 좋은 방법이 있는지 궁금 해서요. – Vincent

0

사용 로그 또는 토스트 활동 B. 이력서 및 일시에 해제에 설정에 정적 플래그를 유지 메시지를

+0

내 질문은 * 사용자가 * 어떻게 알았는지, * 프로그램이 어떻게 알고 있는지 *는 아닙니다. 혼란을 드려 죄송합니다. – Vincent

+0

그래서 log 또는 system.out.println을 사용하여 logcat에 표시합니다. – user3563954

+0

죄송합니다. 이것이 어떻게 문제를 해결할 수 있는지 보지 못했습니다. – Vincent

0

를 표시합니다.

+0

Android 작업이 표시되거나 보이지 않을 때 이벤트를 가져와야합니다. 이 방법은 나에게 이벤트를 제공하지 않습니다. – Vincent

0

재정 내가 제대로 이해하면 onPostResume

@Override 
protected void onPostResume() { 

    //Your code here 

    super.onPostResume(); 
} 
+0

아이디어를 좀 더 자세히 설명해 주시겠습니까? 나는 그것을 얻지 않는다. – Vincent

+0

전경에 활동이 올 때 onPostResume은 – Tareq

관련 문제