2012-12-01 2 views
9

Android 3.2에서 앱을 개발하고 테스트 한 결과 SQLite 데이터베이스와 상호 작용하고 결과를 화면에 표시합니다. 애니메이션이나 멋진 것은 없습니다. 내가 가진 것은 사용자에게 데이터를 보여주는 많은 ListView이다.내 앱이 Android 4.0에서 상당히 느려졌습니다.

앱의 데이터베이스가 매우 커서 somes 테이블에 300,000 개가 넘는 행이 있습니다. 우리는 데이터베이스와의 모든 상호 작용에서 AsyncTask를 사용하려고했지만 성능을 최적화해야하는 몇 가지 사항이 있습니다.

문제는 회사에서 아이스크림 샌드위치로 일부 태블릿을 업데이트했으며 앱이 허니 콤보다 훨씬 느리다는 것입니다. 동일한 코드를 동일한 db로 두 장치에로드했습니다. 하나는 ICS를 실행하고 다른 하나는 Honeycomb를 실행했습니다. 3.2 기기에서 앱 성능이 훨씬 향상되었습니다. 나는 또한 <uses-sdk android:minSdkVersion="14" />을 사용해 보았지만 잘하지 못했습니다.

4.0에서 성능을 최적화하기 위해 할 수있는 일이 있습니까? 나는 또한 이것이 일어난 이유와 그 원인이 될 수있는 것이 무엇인지 알고 싶다. (4.0에서 잘 작동하지 않는 컴포넌트 나 클래스).

감사합니다.

업데이트 : 내 앱의 기본 화면에 대한 해결책을 찾았습니다. 나는 수평 목록으로 작동하는 조각을 제시하고 있었는데, HorizontalScrollView은 거대한 데이터 목록을로드하고 ScrollView 내부에 제시된 LinearLayout을 많이 만들었습니다. HorizontalListView이라는 위젯을 발견하고 내 목록을로드하는 데 사용했습니다. 그냥 그게 응용 프로그램을 더 빨리 만들었습니다. 그러나 ICS에서 느린 이유에 대한 답을 찾지 못했습니다.

또한 앱 프로파일 링을 시도했지만 매우 어려운 일입니다. 많은 정보가 있습니다. 응용 프로그램의 속도를 높이려면 다음 주에도 그렇게 할 것입니다. 모든 답변과 의견에 감사드립니다.

+0

두 장치 모두에서 DDMS 도구를 사용하여 힙 크기를 확인 했습니까? – Talha

+3

결론에 도달하기 전에 두 장치에서 [app app] (http://developer.android.com/tools/debugging/debugging-tracing.html)을 병목 현상이 발생한 위치를 확인해야합니다. – Felix

+1

나는 전에 같은 문제에 직면했기 때문에 그것을 물었다. 따라서 dalvik VM 힙 크기는 각 안드로이드 버전/장치의 /system/build.prop 환경 설정 파일에서 설정됩니다. 정확한 기본 설정 키는 dalvik.vm.heapsize입니다. 값은 메가 바이트 단위이며 장치 기능에 따라 다릅니다. 이 때문에 앱은 다른 기기에서 다르게 동작 할 수 있습니다. – Talha

답변

관련 문제