2010-12-29 4 views
5

아주 간단한 비 GUI 조치를 취할 짧은 응용 프로그램을 작성하려고합니다. 화면 상단에있는 화면 (예 : 홈 화면))을 선택하고 마칩니다. 그게 다야.완전하게 활동의 GUI를 제거하는 방법 (검은 색 화면을 피하십시오)

이것은 거의 작동하지만 앱을 시작한 후에도 간단한 검은 색 화면이 나타나고 다시 홈 화면으로 돌아가서 그 후에 의도 한대로 작동합니다. 내 액티비티에 setContentView를 사용하지 않아서 뷰를 빼앗긴다면 블랙 스크린을 피할 수있을 것이라고 생각했지만 여전히 팝업된다. (관련 질문에서 제안한 바와 같이) 서비스가 내 문제에 대한 해답이 아니라는 점에 유의하십시오. 난 그냥 즉시 실행하고 끝나는 GUI를 덜 (토스트 제외) 애플 리케이션을 원한다. 서비스 내 문제에 대한 답하지

+1

서비스가 귀하의 문제에 대한 해답이 아닌 이유를 설명하면 도움이 될 것입니다. 이것은 매우 서비스 지향적 인 것으로 들립니다. – Matt

+1

첫째, 서비스가 의도 한대로 내 프로세스가 백그라운드에서 계속 실행되는 것을 원하지 않기 때문입니다. 신속하고 깨끗한 진입과 퇴출을 원합니다. 둘째, Android 설명서에는 활동에 UI가 없어도되지만 그렇게 할 수있는 방법을 찾지 못했다는 내용이 나와 있습니다. (답변 1 이미 내 문제를 해결) 어쨌든 고마워요. – shutou

답변

17

입니다 onResume()에서 돌아 오기 전에 finish()으로 전화 할 것입니다. 그 이후에 더 많은 작업을 수행하려는 경우 (예를 들어 네트워킹이나 다른 작업을 동 기적으로 할 수없는 경우), 아마도 작업을 처리하여 활동이 끝난 후에도 플랫폼이 계속 실행되어야합니다.

+0

훌륭합니다! 이것은 내가 필요한 것입니다. 내 프로세스가 백그라운드에서 계속 실행되기를 원하지 않기 때문입니다. 고마워! – shutou

+0

@shutou : 서비스를 시작하는 것보다 (아마도 알 수는 없지만) 아마 오버 헤드 일 것입니다. 백그라운드에서 서비스를 계속 실행할 필요는 없습니다. 내 대답을 내 대답을 참조하십시오. – Falmarri

+0

실제 활동은 일부 논리 (예 : 소개, 가입 또는 내용)에 의해 결정되어야하기 때문에 시작 활동을 내 런처 활동으로 사용하고 있습니다. 이것 앞에 항목 활동도 보여줄 것입니다, 그것은 귀찮았지만 지금은 사라졌습니다! 감사합니다. – Meanman

-1

:) 덕분에

예는 매니페스트 사용 <activity> 이것은 당신을 가정

android:theme="@android:style/Theme.NoDisplay" 

+0

알았어, 내가 원하는 것을 할 수있는 대안이 될 수도 있지만 답변에서 볼 수 있듯이 앱의 UI 표시를 차단할 수 있습니다. 그리고 간단한 응용 프로그램이 끝난 후에 백그라운드 프로세스가 실행되기를 원하지 않기 때문에 필요한 것보다 서비스가 더 많을 것이라고 생각했습니다. 나는 서비스가 Answer 1에 주어진 해결책보다 더 효율적인지 여부를 확신 할만큼 충분하지 못하다는 것을 인정한다. 이것은 내 app이 여분의 프로세스들에 미치지 않는 최소한의 활동으로 만 만들어 질 수있게 해준다. 또는 스레드. 장단점을보다 자세히 고려하기 위해 서비스에 대해 더 많이 배울 수 있습니다. 감사합니다 – shutou

+0

서비스가 추가 프로세스 또는 스레드를 생성하지 않습니다. 기본적으로 서비스는 GUI가없는 활동입니다. 필자는 소스 코드를 철저히 조사하지는 않았지만 거의 정확하게 그럴 것입니다. 서비스를 계속 실행하지 않아도됩니다. 사실, 그렇게하지 마십시오. 그냥 서비스를 시작하고, 일을하고,'stopSelf()'를 호출하십시오. – Falmarri

0

IntentService에 대한 작업과 비슷합니다. 당신은 인 텐트를 보내고, 시작하지 않으면 시작된 모든 수신 된 인 텐트를 처리 한 다음 중지합니다. 짧고 간단합니다.

관련 문제