2016-07-25 1 views
0

내 앱에는 A와 B의 두 가지 활동이 있습니다. 데이터를 다운로드 할 때 일부 데이터를 다운로드하고 B 작업을 시작합니다. 이는 onReceive() 메소드가 B부터 시작하는 BroadcastReceiver를 통해 수행됩니다. 의도.백그라운드에서 앱을 실행하면 시작하지 않는 방법

내 문제는 데이터가 다운로드되는 동안 내 앱이 백그라운드로 이동하면 (예 : 내 앱을 시작한 다음 빠르게 '집'버튼을 클릭하거나 스퀘어 '스위치'버튼으로 앱을 전환하는 경우) 데이터가 다운로드되면 내 앱이 포 그라운드로 돌아옵니다. 짜증이납니다.

지금까지 답변을 닫을 수있는 intent.setAction(Intent.ACTION_SCREEN_ON)을 포함하여 플래그를 추가하고이를 방지하기 위해 의도적으로 작업을 시도했습니다. API를 실행하는 장치에서 제대로 작동하지만 API를 실행중인 장치에서는 작동하지 않습니다. 22.

+1

검사를 수행 할 부울을 보유 할 정적 변수를 추가하십시오. 활성 이동 의도가 표시되지 않는 경우 예 : onAceivit.isactive = false in onPause and MainActivit.isactive = true onResume 내부에서 onReceve() 내의 MainActivit.isactive를 확인하십시오. – Muthu

답변

2

일반적으로 서비스를 사용하여 백그라운드에서 작업을 수행합니다. 서비스에는 UI가 없습니다 (명백한 이유로). 정의에 따르면, 활동은 전경 작업입니다. 여러분이보고있는 행동은 정확히 무엇이 일어나야하는지입니다.

나는 활동을 서비스로 바꾸려하지 않는 것이 좋습니다. 당신이 찾던 바로 그 목적을 위해 설계된 안드로이드에서 기능을 사용할 수있을 때 당신은 전체 애플리케이션 라이프 사이클에 반하여 일할 것입니다. 여기

, 나는 당신이 서비스에 대한 자세한 읽으십시오 빠른 자원이다 :

https://developer.android.com/training/best-background.html

ActivityBroadcastReceiver는 수신 앱이 배경에있을 때 Intent 객체도 처리하지만, '아무튼 앱을 포 그라운드로 강제 실행하지 마세요. 앱이 보이지 않는 동안 백그라운드에서 발생한 이벤트에 대해 사용자에게 알리려면 Notification을 사용하십시오. 은 수신 브로드 캐스트 Intent에 대한 응답으로 Activity을 시작합니다.

+0

참으로 ... 모범 사례에서 꽤 명확합니다. "** _ Never _ **는 응답으로 'Activity'를 시작합니다. 들어오는 방송 '인 텐트 (Intent) – FlorianT

관련 문제