Android-Google지도에 많은 선 그리기-응용 프로그램이 응답하지 않음

크리스토퍼 존슨

Google지도 v2에서 움직임을 추적하는 앱을 작성 중입니다. 변경된 각 위치에 대해 새 맵 포인트를 배열에 추가 한 다음 폴리 라인을 맵에 추가합니다. 또한 sqlite 데이터베이스에 위치를 저장하고 있습니다. 다음은 관련 코드입니다.

LatLng mapPoint = new LatLng(location.getLatitude(), location.getLongitude());
            routePoints.add(mapPoint);

            Polyline route = map.addPolyline(new PolylineOptions().color(Color.BLUE).width(2));
            route.setPoints(routePoints);

약 2000 포인트 후에 앱이 내 휴대폰에서 응답하지 않습니다. 나는 데이터베이스에서 모든 데이터를 가져올 때 (때로는 6000 개 이상의 행) 배열이 너무 커져서 (배열을 사용하여) 동일한 논리를 따르고 맵을 잘 칠하기 때문에 배열이 너무 커졌다 고 생각하지 않습니다. 메인 스레드 (음악 재생, Google지도, 위치 서비스, 데이터베이스 삽입, 텍스트보기 변경 등)에서 모든 것을 실행하고 있기 때문인지 궁금합니다. 그게 범인이라면 다른 스레드에 넣으려면 어떻게해야합니까? 다른 스레드에는 무엇이 들어가야합니까? 마지막으로, 이러한 것들을 다른 스레드로 옮기는 방법을 작성하는 방법은 무엇입니까 (코드 샘플 또는 리소스를 가리킴).

TIA

카이

이상적으로는 UI를 포함하지 않는 모든 것을 다른 스레드, 특히 네트워킹 및 파일 액세스 (예 : 데이터베이스) 코드로 옮기고 싶을 것입니다. 여기에서 천 컷 상황에 의한 죽음 일 것입니다. 몇 가지 제안 :

  1. AsyncTask를 사용하여 데이터베이스 / 모든 파일 액세스를 다른 스레드로 확실히 이동 하고 데이터가로드되면 UI에 새로 고침을 알립니다 ( StrictMode 를 활성화하여이 작업을 수행했는지 확인).
  2. 데이터베이스 액세스를 최소화하십시오. 플래시 스토리지로 지원되므로 동일한 작업이 다른 앱 / Android OS 자체가 스토리지에 액세스하기 때문에 1ms 및 50ms가 걸리는 경우가 있습니다. 행을 읽으면 캐시합니다.
  3. MediaPlayer를 사용하는 경우 AsyncTask로 이동하거나 비동기 메서드 (예 : prepareAsync ())를 호출합니다.
  4. 너무 많은 그리기 명령을 실행하고있을 수도 있습니다. 이것이 사실인지 확인하기 위해 몇 가지 테스트를 수행하십시오. 그렇다면 화면에 표시 될 것이라는 것을 알고있을 때만 그리기 명령을 실행하십시오.

위에 제시된 순서대로 변경하는 것이 좋습니다.

수행하려는 작업이 무엇인지는 모르겠지만 AsyncTask를 사용하는 방법에 대한 대략적인 개요는 다음과 같습니다.

 private class LocationTask extends AsyncTask<Source, Integer, List<PolylineOptions>> {
     protected Long doInBackground(Source... sources) {
         List<PolylineOptions> list=new ArrayList<PolylineOptions>();

         //create or retrieve Polyline objects here

         return list;
     }

     protected void onProgressUpdate(Integer... progress) {
         //don't need this if it's reasonably fast
     }

     protected void onPostExecute(List<PolylineOptions> result) {
         for(PolylineOptions poly:result) {
             map.addPolyline(poly);
         }
     }
 }

실행하려면 : new LocationTask().execute(source1, source2, source3); SourceLocationTask에 해당 기능을 수행 할 수있는 기능을 제공하는 데 사용하는 데이터 구조입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

«프로그램이 응답하지 않음»은 무엇을 의미합니까?

분류에서Dev

Python 프로그램이 응답하지 않음

분류에서Dev

AEM 6.2 응용 프로그램 페이지가 매우 높은로드 시간을 제공하고 작성자 환경이 응답하지 않음

분류에서Dev

Android보기가 그리기에 응답하지 않습니다.

분류에서Dev

전체 화면 응용 프로그램에서 화면이 응답하지 않음

분류에서Dev

Eclipse에서 창 응용 프로그램이 열리지 않음

분류에서Dev

14.04 응용 프로그램이 최소화되면 데스크탑이 응답하지 않음

분류에서Dev

ClickOnce 응용 프로그램이 바로 가기에서 열리지 않음

분류에서Dev

INSERT 키가 많은 응용 프로그램에서 작동하지 않는 이유는 무엇입니까?

분류에서Dev

많은 프로그램이 메모리 및 SSD 업그레이드 후 잠시 동안 응답하지 않습니다.

분류에서Dev

"시작 응용 프로그램"이 작동하지 않음

분류에서Dev

Windows 응용 프로그램을 응답하지 않게 만드는 방법은 무엇입니까?

분류에서Dev

Linux에서 응답하지 않는 응용 프로그램을 찾는 방법

분류에서Dev

안드로이드 응용 프로그램은 USB 권한을 기억하지 않음

분류에서Dev

Windows 10 일부 응용 프로그램 및 작업 관리자가 응답하지 않음

분류에서Dev

응용 프로그램이 로컬에서 프록시를 사용하도록 강제합니다 (많은 투명 프록시 프로그램이 작동하지 않음).

분류에서Dev

버튼을 클릭 한 후 프로그램이 응답하지 않음

분류에서Dev

사용자 지정 도구 모음이없는 기본 Android 응용 프로그램에서 위쪽 탐색 단추가 작동하지 않습니다.

분류에서Dev

타이머로 페인팅하면 응용 프로그램이 응답하지 않는 이유

분류에서Dev

Linux 프로그램은 쉘 변수 이름이 있어도 응답하지 않습니다.

분류에서Dev

Linux 프로그램은 쉘 변수 이름이 있어도 응답하지 않습니다.

분류에서Dev

E4 RCP 응용 프로그램이 더블 클릭 이벤트에서 응답하지 않습니다.

분류에서Dev

X11 전달에 "이 응용 프로그램이 응답하지 않습니다"넌센스

분류에서Dev

FreeBSD 및 "너무 많은"응용 프로그램 => 소리 없음

분류에서Dev

rails 응용 프로그램이 heroku에 배포되지 않음 (응용 프로그램 오류 메시지)

분류에서Dev

로그인 후 시작 응용 프로그램이 작동하지 않음

분류에서Dev

Java 응용 프로그램으로 실행하면 Java 응용 프로그램 선택 화면이 표시되며 추가 지침은 없습니다

분류에서Dev

Synaptics 터치 패드 스크롤은 많은 응용 프로그램에서 작동하지 않습니다.

분류에서Dev

StreamReader를 실행하면 응용 프로그램이 응답하지 않습니다.

Related 관련 기사

  1. 1

    «프로그램이 응답하지 않음»은 무엇을 의미합니까?

  2. 2

    Python 프로그램이 응답하지 않음

  3. 3

    AEM 6.2 응용 프로그램 페이지가 매우 높은로드 시간을 제공하고 작성자 환경이 응답하지 않음

  4. 4

    Android보기가 그리기에 응답하지 않습니다.

  5. 5

    전체 화면 응용 프로그램에서 화면이 응답하지 않음

  6. 6

    Eclipse에서 창 응용 프로그램이 열리지 않음

  7. 7

    14.04 응용 프로그램이 최소화되면 데스크탑이 응답하지 않음

  8. 8

    ClickOnce 응용 프로그램이 바로 가기에서 열리지 않음

  9. 9

    INSERT 키가 많은 응용 프로그램에서 작동하지 않는 이유는 무엇입니까?

  10. 10

    많은 프로그램이 메모리 및 SSD 업그레이드 후 잠시 동안 응답하지 않습니다.

  11. 11

    "시작 응용 프로그램"이 작동하지 않음

  12. 12

    Windows 응용 프로그램을 응답하지 않게 만드는 방법은 무엇입니까?

  13. 13

    Linux에서 응답하지 않는 응용 프로그램을 찾는 방법

  14. 14

    안드로이드 응용 프로그램은 USB 권한을 기억하지 않음

  15. 15

    Windows 10 일부 응용 프로그램 및 작업 관리자가 응답하지 않음

  16. 16

    응용 프로그램이 로컬에서 프록시를 사용하도록 강제합니다 (많은 투명 프록시 프로그램이 작동하지 않음).

  17. 17

    버튼을 클릭 한 후 프로그램이 응답하지 않음

  18. 18

    사용자 지정 도구 모음이없는 기본 Android 응용 프로그램에서 위쪽 탐색 단추가 작동하지 않습니다.

  19. 19

    타이머로 페인팅하면 응용 프로그램이 응답하지 않는 이유

  20. 20

    Linux 프로그램은 쉘 변수 이름이 있어도 응답하지 않습니다.

  21. 21

    Linux 프로그램은 쉘 변수 이름이 있어도 응답하지 않습니다.

  22. 22

    E4 RCP 응용 프로그램이 더블 클릭 이벤트에서 응답하지 않습니다.

  23. 23

    X11 전달에 "이 응용 프로그램이 응답하지 않습니다"넌센스

  24. 24

    FreeBSD 및 "너무 많은"응용 프로그램 => 소리 없음

  25. 25

    rails 응용 프로그램이 heroku에 배포되지 않음 (응용 프로그램 오류 메시지)

  26. 26

    로그인 후 시작 응용 프로그램이 작동하지 않음

  27. 27

    Java 응용 프로그램으로 실행하면 Java 응용 프로그램 선택 화면이 표시되며 추가 지침은 없습니다

  28. 28

    Synaptics 터치 패드 스크롤은 많은 응용 프로그램에서 작동하지 않습니다.

  29. 29

    StreamReader를 실행하면 응용 프로그램이 응답하지 않습니다.

뜨겁다태그

보관