2013-04-30 2 views
1

몇 시간 동안 집중적으로 사용되는 응용 프로그램을 개발했으며 많은 웹 서비스 호출을하고 비동기 작업을 많이 사용하며 sqlite 데이터베이스에서 많은 작업을 수행합니다. 문제는 절전 모드 (배터리가 충전 된 경우에도 발생 함)로 UI가 전혀 응답하지 않는 것처럼 (버튼 클릭에 대해 작성된 로그는 쓰여지지 않음) 무작위로 디스플레이가 어두워지는 것입니다. 홈 버튼을 클릭하면 휴대 전화가 올바르게 작동하고 모든 앱이 정상적으로 작동합니다. 앱으로 돌아 가면 디스플레이가 다시 어두워집니다. 나는이 행동의 원인에 대해 전혀 알지 못해 고객이 대답을 원하기 때문에 상사가 설명을 원하기 때문에 여러분 중 일부가 나를 도울 수 있기를 바랍니다.android app touch unrensponsiveness

편집 : 문제가 발생했을 때 화면 잠금 해제 직후이므로 앱 재개와 관련이 있어야하지만 실제로이 문제의 원인을 알 수는 없습니다.

+1

저는 비활성 상태에서 장치 화면이 시간 초과되는 것을 방지하기 위해 wakelock을 확보해야하는 것처럼 보입니다. – FoamyGuy

+0

"비활성 후 화면 제한 시간"이란 정확히 무엇을 의미합니까? – Apperside

+0

화면을 켜고 다른 작업을하지 않고 잠시 자리를 비운 채로두면 화면이 어둡게되어 결국 어느 시점에서 꺼집니다. 사용자 설정은 어느 정도 소요됩니다. 'onStart()'에서 wakelock을 얻은 다음'onStop()'에서 해제하면 앱이 실행 중일 때 장치가 "잠자기 상태가되지 않게"됩니다. – FoamyGuy

답변

1

일부 작업이 기본 UI 스레드를 차단하고 앱이 응답하지 않는 것 같습니다. 이러한 집중적 인 작업이 UI 스레드에서 수행되는지 확인하십시오.

+2

UI에서 너무 많은 작업을하는 것이 잘못 되었다면 (그러나 나는 그렇게 생각하지 않는다. 나는 ANR 메시지를받지 말아야한다)? 문제가 발생하면 ANR 메시지가 표시되기 때문에 많은 시간이 걸릴 수 있습니다. – Apperside

0

jaibatrik이 말했듯이 이것은 배경 스레드, AsyncTasks 등이 아닌 UI 스레드에서 너무 많은 작업을 수행 할 때 발생할 수 있습니다.이 방법이 달성되지 않는 한 가지 방법은 모든 작업이 배경 스레드 (일부 형식)이지만 UI 스레드 작업은 백그라운드 스레드 작업의 결과를 기다리고 있습니다.

0

이렇게 표시가 흐려지는 것을 방지 할 수 있습니다. ll.setKeepScreenOn (true);

onresume(), onpause() & co.를 처리해야합니다. 백그라운드 작업 또는 서비스 내에 메모리 누수가 생길 수 있습니다.