2012-12-11 4 views
8

해결할 수없는 문제가있는 것처럼 보입니다. 주말을 보내고 해결할 수 없습니다. 두 가지 액티비티로 간단한 테스트 앱을 만들 때 : 1. 주요 활동 : 몇 개의 버튼, 타이머 (백그라운드 스레드) 및 SQLite db에 대한 조명 요청. 2. 두 번째 활동 : 몇 개의 단추, 하나는 클릭 수신기에 있으며, 한 번 클릭하면 첫 번째 활동으로 돌아갑니다. 큰 단추 (화면 너비의 1/4 정도의 화면 너비)를 사용하면 xml 레이아웃 리소스에 중첩 된 무게 요소 나 기타 이국적인 요소가 포함되지 않습니다.Android 성능 API 레벨 11 이상

테스트 프로젝트이므로 다른 기능은 없습니다.

다음 심각한 문제가 있습니다. - 매니페스트 파일의 API 수준을 3으로 설정하면 모든 것이 완벽하게 작동합니다. (호환 모드에서 자동으로 화면 표시) - API 레벨 11 이상을 설정할 때 두 번째 활동이로드되는 데 최대 10 초가 걸릴 수 있습니다. 처음으로 두 번째 활동을 연 후 상황이 캐시 된 것처럼 보이고 지연이 더 이상 존재하지 않습니다. - API 레벨을 11 이상으로 설정할 때 호환 모드를 강제 적용 (화면 해상도 변경) : 지연이 남아 있습니다.

이전 응용 프로그램을 업그레이드 할 때이 문제가 발생하여이 테스트 프로젝트를 작성했습니다. 이전 버전의 API에서 부드럽게 돌아갔습니다. Android 버전 3 이상을 실행하면 최대 25 초의 지연이 발생합니다! (정적 텍스트 만 보여주는 활동을 열어도 ...).

새 Galaxy Tab에서 테스트 중이므로 문제가되지 않습니다. 나는 해결책을 찾기 위해 시간을 보냈고, 그것에 가까운 것을 찾지 못했다. 나는 Eclipse와 모든 안드로이드 리소스를 완전히 설치 해제하고 모든 것을 새로 설치하고 업데이트했다 (내 Galaxy Tab의 공장 초기화 포함). 불운.

추적을했는데 문제는 GLES20Canvas.nDrawDisplayList에 있습니다. 이 목록을 작성하는 데는 많은 시간이 필요하지 않을 때도 있습니다 ...

아무도 내가 이것을 해결할 수있는 방법에 대한 단서가 있습니까?

감사합니다, 마틴

답변

1

GLES20Canvas.nDrawDisplayList

이 그것을 expected to have a large portion of the time if you are drawing a lot, especially very big views입니다 온다.

내가 좋아하는 것 당신이 게시물을 검사하여 당신이해야 할 것과하지 말아야 할 것 android-30-hardware-acceleration

+1

감사합니다.이전에이 기사를 읽었으며 실험했습니다. 불운. 사실 단순한 텍스트 뷰조차도 렌더링하는데 초가 필요합니다 (레이아웃에는 아무 것도 없습니다). 지금까지 발견 한 유일한 솔루션은 하드웨어 가속을 비활성화하는 것입니다. – martin

+0

Romain Guy는 Google의 변호인 일 뿐이며 개발자가 실제로 갖고있는 문제를 해결할 수는 없습니다. – StackOverflowed

3

나는이 문제에 대한 해결책을 발견했습니다에서 대한 링크를 제공합니다 : http://code.google.com/p/android/issues/detail?id=22514

이 솔루션은 하드웨어 가속을 사용하지 않도록하는 것입니다. AndroidManifest.xml에서

, 응용 프로그램 태그에 추가 :

android:hardwareAccelerated="false" 

이제 모든 것을 다시 원활하게 실행됩니다. 불행히도 하드웨어 가속을 사용한다고해서 앱이 시작될 때 더 빨리 실행되는 것은 아닙니다.

+0

모든 장치의 하드웨어 가속 기능을 비활성화하고 싶지 않을 수도 있습니다. -> http://stackoverflow.com/a/21791909/546901 이 문제는 HTC 장치 하나에서만 나타났습니다. traceview 결과에 문제가 nDrawDisplayList와 함께 표시됩니다. 내가 시도한 다른 장치에 대한 Traceview 결과가 좋습니다. 그것은 장치 코드 나 OS 레벨 버그를 암시하는 것으로 보이지만 응용 프로그램 코드의 버그는 아닙니다. 사람들이이 문제 (HTC One 또는 Galaxy Nexus)를보고하는 기기에서 낮은 심도의 목록보기 또는 스크롤보기로 재현하는 것이 쉽습니다. –

관련 문제