문제

Android 앱의 코드를 편집하고 있으며 GPS 호출을 서비스에서 편집하고 있습니다.locationlistener.또한 ServiceConnection 를 사용합니다

일부보기에서 장치는 내 응용 프로그램이 응답하기에는 너무 오래 걸리고 사용자가 "강제 닫기"또는 "대기"할 수 있음을 결정합니다.이 팝업이 나타나기 전에 응용 프로그램은 사용자가 여전히 사용할 수 있으며 스크롤, 슬라이드, 버튼 등을 누릅니다.

이 문제가 발생할 때마다 실행중인 GPS 서비스와 관련이 있다고 가정합니다.

이 문제는 백그라운드 스레드 대신 uithRead에서 실행되는 스레드와 관련이 있다고 들었습니다.그러나 서비스가 백그라운드 스레드에서 비동기 적으로 실행되는지 확인했습니다.

통찰력을 높이 평가했습니다

도움이 되었습니까?

해결책

서비스를 사용하면 반드시 새 스레드를 생성하는 것은 아닙니다. 서비스 호출은 호출자 스레드에서 실행됩니다.Android API 서비스 문서에서 다음을 수행하십시오. "다른 응용 프로그램 개체와 마찬가지로 서비스는 호스팅 프로세스의 기본 스레드에서 실행됩니다.".

다른 프로세스에서 실행할 서비스를 지정할 수 있지만 모범 사례는 서비스에 새 스레드를 생성하는 것입니다.

Android 서비스에서 : http://developer.android.com/reference/android/app/service.html.

다른 팁

Asynctask를 확장하는 것이 좋습니다. UI 스레드를 적절하고 쉽게 사용할 수 있습니다.백그라운드 작업을 수행하고 스레드 및 / 또는 핸들러를 조작하지 않고도 UI 스레드에 결과를 게시 할 수 있습니다.DoinBackground 메서드에서 모든 컴퓨팅을 수행 할 수 있습니다 .BTW 강제 은 이러한 종류의 문제에 대한 고전적인 행동입니다. 행운을 빌어 요 !!!

서비스의 처리는 여전히 응용 프로그램이 중단 될 수 있습니다.

구현을 바라보아야 할 솔루션은 별도의 스레드에서 활동을 빌드 할 수있는 논리를 실행하는 것입니다.여기에는 데이터베이스 업데이트 / 삽입, 네트워크 통신 및 다른 장기 코드 조각이 포함됩니다.

anpreexecute 및 onpostexecute 함수에서 UI를 조작 할 수 있듯이 Asynctask는 편리한 방법입니다.

Subclass로 서비스에서 직접 asynctask를 구현할 수 있습니다.

hoepfully 이것은 도움이됩니다! 건배

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top