2013-06-09 1 views
1

어제, 나는 Traceview의 학생이되는 데 12 시간을 보냈다. 나는이 사실을 알기조차하지 못했다. 얼마나 정확하게 결정하기 위해안드로이드 Traceview - 내 응답이 응용 프로그램에 대한 답변을 보유하고 ... 내 생각 엔

  1. 정렬 "EXCL CPU 시간"에 의해 : 나는 그것을 생산하는 데이터의 절대 충격을 극복 한 이제

    , 나는 Traceview이 몇 가지 간단한 개념에로 요약 할 수 있습니다 발견 각 개별 메소드가 개별적으로 사용하는 사용법.

  2. 호출 빈도와 호출 당 CPU 시간/실시간을보십시오. 분명히 더 높은 전화가 조사되어야합니다. 대부분의 경험에서 위의 # 1로 정렬하면 너무 많이 호출되고 너무 많은 시간이 걸리는 메소드가 목록 상단에 표시됩니다 (CPU를 가장 많이 사용하기 때문에 의미가 있습니다).

어쨌든, 난 항상 내 CPU의 90 %를 사용하여 내 응용 프로그램에서 실제 시간 지연의 대부분을 차지하는 3-4 방법을 찾을 수 위의 두 단계를 수행. 유일한 문제는이 같은 시스템의 방법이며, 이러한 방법 중 누구도 내가 쓴 방법이 없습니다입니다 :

  1. BitmapFactory 방법
  2. 웹킷 방법
  3. 그리고 이것은 말했다되고

다른 시스템 방법 , 최고의 리소스 돼지가 시스템 메소드라면 내 레이아웃 설계와 관련이 있다고 가정하는 것이 맞습니까? 저는 BitmapFactory가 어떻게 그렇게 높을 수 있는지를 놓치고 있습니다. 하나의 Activity BitmapFactory가 리소스 자체의 95 %를 차지하고 있지만, 레이아웃은 매우 복잡하지 않습니다.

TL - Traceview를 실행하고 리소스의 최고 덩어리가 모든 시스템 방법 인 경우 레이아웃 문제입니까? 또는 시스템 메서드가 내 사용자 지정 메서드와 직접 관련이없는 것처럼 높은 이유를 알 수있는 다른 방법은 무엇입니까?

내가 Traceview는 몇 가지 간단한 개념에로 요약 할 수있다 찾을 라이언

답변

0

글쎄, 나는 문제를 발견하고 그것은 쓴 달콤한. 그것이 내 코드 또는 레이아웃 문제가 원인이 아니기 때문에 그것은 훌륭했습니다. 광고를 작성하는 데는 loadAdOnCreate = "true"를 사용하는 Adob ​​AdView가있었습니다. AdView에서 작성한로드 지연을 제거 할 수 없으면 수익원을 전환해야 할 수도 있습니다. 그것은 발견하기 힘든 하나였다, 나는 이것을 예상 했어야했다!

3

, 대단히 감사합니다 :

그 개념이 최고, 이럴 수 없습니다. 각각의 방법은 분리 특히

에서 사용하는 방법을 많이 사용 "EXCL CPU 시간"에 의해

정렬이 개념은 매우 형편 이럴입니다 정확히 확인합니다. 네, 이것은 유용한 데이터입니다. 그러나 을 호출하여 호출 스택을 백업하여이 문제를 유발하는 원인을 찾아야합니다. 경우에 따라 코드가 직접 코드로 사용됩니다. 때로는 프레임 워크의 일부인 것으로 인식하는 것이 있습니다 (예 : : View). 어떤 랜덤 메소드가 많은 시간을 차지하고 있다는 것을 알고 있다면, 을 식별 할 때까지는 아무런 의미가 없습니다.은 그 메소드가 처음에 호출되도록 트리거합니다.

Traceview를 실행하고 리소스의 최고 덩어리가 모든 시스템 방법 인 경우 레이아웃 문제입니까?

번호

또는 시스템 방법은 내 사용자 정의 메소드에 직접 관련되지 않는 한 그렇게 높은 이유를 내가 말할 수있는 방법을 다른.

호출 스택을 위로하여 이러한 메소드를 자주 또는 부적절하게 호출하는 사람을 파악하십시오.

예를 들어, BitmapFactory 예에서 사용자 (또는 사용중인 라이브러리)가 BitmapFactory을 호출하고 있으며 주 응용 프로그램 스레드에서이를 수행하고있는 것으로 나타납니다.

통화 스택을 위로 이동하려면 관심있는 방법을 나타내는 행의 왼쪽 가장자리에있는 삼각형을 클릭하십시오. 그러면 그 아래에 두 개의 가지 "부모"와 "어린이"가 나타납니다. "부모"는 메서드에서 호출 스택의 다음 단계를 나타내며, 인식하는 것을 찾을 때까지 부모 체인을 따라 계속 작업 할 수 있습니다.

그래서 IMHO는 을 포함하여 시간을 기준으로 정렬하는 것이 더 효과적입니다. 코드가 직접적으로 범인이기 때문에 상단으로 거품이 날 것입니다.

+0

감사합니다. 인터넷에서 아직 본 Traceview 디버깅에 대한 가장 좋은 설명입니다. 대부분의 자습서는 문제를 추적하는 방법을 설명하는 것을 멈 춥니 다. 도와 주셔서 대단히 감사합니다. 스택을 가로 지르면서 스택을 드릴 다운했습니다. 나는 실제로 어떻게 호기심이 강한 방법을 해고하는지 알기 위해 스택을 뚫는 것에 대한 당신의 요점을 본다 ... 지금까지, 나는 아무것도 인식하지 못하지만, 나는 지금 더 잘 적응했다고 믿는다! 고마워, 너의 책을 사는 이유야. – AutoM8R

+0

@ AutoM8R : 친절한 단어 주셔서 감사합니다! FWIW, Traceview에 관한 기사를 [* The Busy Coder 's Guide to Android Development *] (http://commonsware.com/Android)에서 1 년 이상 보유했습니다. – CommonsWare

+0

당신이 그렇게 말할 까봐 두려웠습니다. 그 책을 샀어. 나는 인정할 것이다, 나는 초점을 맞추는 데 어려움을 겪고 나는 한 번에 하나씩 관심있는 부분을 읽는다. 나는 Traceview가 무엇인지 몰랐다. 그래서 나는 그것을 잊어 버렸다. 나는 분명히 이것을 읽고 완벽하게 실현할 것입니다. – AutoM8R

관련 문제