마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Debug로 실행 시 동작하나 Run으로 진행시 에러가 나는납니다.

0 추천
안녕하세요

SunGraph 라는 차트 라이브러리를 사용하여 실시간 차트가 변동하는 프로그램을 작성하고 있습니다.

C#만 개발을 한지라, Java 안드로이드 프로그래밍에 익숙치 않은데요..

현재 제가 작성한 코드는

 

Thread 에서 Chart에 그려진 기존 데이터를 Array에 저장한 뒤,  새로운 데이터를 추가 후 다시 Chart에 그리는 작업을 진행하고 있습니다.

 

이 과정에서 에러가 발생하길래, 처음에는 외부Thread에서 UI Thread에 접근하는것 때문에 에러가 나는건가?

했는데.. Debug로 스탭별로 돌려보니, 이 때는 정상 동작하더라구요..;

 

에러메시지는

FATAL EXCEPTION: Thread-4279
.lang.NullPointerException: Attempt to invoke virtual method 'boolean com.sunb.lib.SunGraph.GraphView$SurfaceThread.getWaiting()' on a null object reference at com.sunb.lib.SunGraph.GraphView.UpdateAll(GraphView.java:100)

이런식입니다. 에러메시지가 NullPointException인걸 봐서는 CrossThread 작업으로 인한 에러는 아닌 것 같은데, 도저히 무슨 문제인지 감이 안오네요..;
차닝 (540 포인트) 님이 2016년 1월 29일 질문

2개의 답변

0 추천
 
채택된 답변

타이밍이슈가 발생해서 그런 듯 합니다.
비동기 처리되는 부분들 확인 해 보시기 바랍니다.

디버그 사용시 비동기로 도는 부분들이 "비동기"로 돌기 때문에
디버그로 잡고 있을 경우 이미 데이터를 받아왔다거나 하는 경우가 생길 수 있습니다.

그냥 실행했을 경우에는 디버그에서 처럼 천천히 진행되거나 하지 않기 때문에
데이터를 받아오지 않았는데 해당 데이터를 통해 어떤 액션을 하려고 한다면 타이밍 이슈가
생길 수있습니다.

lonepine (2,660 포인트) 님이 2016년 2월 1일 답변
차닝님이 2016년 2월 12일 채택됨
0 추천

GraphView.java:100 번째줄 앞뒤 소스를 봐야알거같은데요~

sadeva (21,550 포인트) 님이 2016년 1월 29일 답변
...