저는 작업중인 꽤 큰 응용 프로그램을 가지고 있습니다. 때로는 2.3 장치에서 시작할 때 UI 스레드가 어떻게 든 멈추는 경우가 있습니다. 나는 그것이 내 자신의 과제 중 하나라고 생각하지 않지만, 나는 그것이 무엇인지 알 수 없다. UI 스레드에서 현재 실행중인 정확한 작업을 파악할 수있는 방법이 있습니까?2.3 장치에 UI 스레드가 걸렸습니다.
상세 정보 : 나는 어떤 시점에서 주요 Looper
를 사용하는 Handler
에 Runnable
를 실행 해요,하지만 run()
그 경우에 실행되지 없구요. 화면을 터치하면 ANR도 표시됩니다. 나는 그것이 배경 이미지 중 하나를 제거 할 때 그것이 덜 붙어있는 것처럼 느껴지기 때문에 그것이 어떤 방식 으로든 메모리와 관련이 있어야한다고 생각한다. 그래도 OOM 예외는 없습니다.
편집 나는 주요 Looper
에 대한 로깅을 사용 가능. 파견되는 마지막 작업은 what=1004
입니다. 이것은 분명히 나에게서 아니다.
Looper: >>>>> Dispatching to Handler{406cbec0} null: 1004
보조 스레드에서 UI를 업데이트 하시겠습니까? – Cata
내가 아는 것이 아니라. 나는 엄격한 모드를 가능하게했다. 나는 그것이 나를 알릴 것이라고 생각한다. – SimonSays
글쎄, 내 생각에 당신은 메인 쓰레드 나 네트워킹/db 콜에서 무언가를 무겁게하거나, 보조 쓰레드에서 UI를 업데이트하고 있지만, 대부분의 경우 앱이 다운 될 것이다. 더 많은 도움이 필요하면 여기에 활동 코드를 게시하십시오 :) – Cata