2011-12-07 17 views
0

基本上,一切都指向我的應用程序被凍結,但在調試時沒有錯誤,並且ANR沒有可見的地方。它不響應觸摸,但最重要的是,我有一個繪圖函數中的fps計數器,它會在凍結後停止在logcat中顯示。我第一次碰到類似這樣的事情,我不知道如何找到問題。我的應用程序停止響應,但不會拋出ANR,需要幫助調試

任何幫助表示讚賞。

+0

正在主線程上運行一些網絡操作或其他繁重的操作? –

+0

我每隔一幀觸摸一次最多創建8個新顏色(r,g,b,a)對象1秒鐘。它似乎工作正常,然後它會全部凍結。以60fps穩定運行,然後一無所獲。所有的繪圖都在它自己的線程中完成。我不認爲這是沉重的,但也許我應該嘗試彙集顏色對象,看看問題是否消失? –

回答

0

如果logcat停止從應用程序輸出並且沒有ANR,我會冒險猜測問題是onDraw()函數未能被調用,因此畫布沒有被重繪和onTouch ()在您觸摸屏幕時未被調用。

如果您使用的是SurfaceView,它是否正確實現了SurfaceHolder?

+0

是的,使用SurfaceView/Holder,據我所知它們是完美實現的。它工作得很好,直到最近我才加入這些顏色轉換,他們似乎工作了一段時間,然後它會凍結。我想我已經把線程重載到它剛剛放棄的地步了?我只是嘗試在線程中的pause()和stop()函數中放入跟蹤語句。我似乎甚至無法精確確定線程停止的位置。 –

+0

那麼如果它沒有你最近投入的工作,那麼你有一個好主意,問題在哪裏。如果您展示了代碼示例,則可能更容易提供幫助。 – 2011-12-08 01:08:00

0

當這件事發生在我身上時,這是因爲它在我的代碼中遇到了一個斷點。雖然這可能只是我。

0

所以問題是一個無限循環。我猜是因爲它不是掛掉的主線程,ANR沒有出現。

我怎麼想通了......

我更新通過Eclipse的DDMS,我居然可以配置文件的內容佔用了所有的CPU時,它會凍結。在DDMS沒有幫助之前。

int newC = -1; 
    while(newC < 0) 
    { 
     int rand = colorList.getRandom(); 
     for(int i = 0; i < 5; i++) 
     { 
      if(nopick[i].equals(colorList.getColor(rand))) 
       {rand = -1; break;} 
     } 
     if(rand != -1) 
      newC = rand; 
    } 

這是一段代碼,我知道馬虎。現在回想起來,我覺得自己像個白癡。

相關問題