2013-10-23 40 views
0

我嘗試從Evernote Android API獲取筆記的內容。Android - Evernote API getContent()GC_CONCURRENT

我已成功通過該服務進行身份驗證,並且可以執行「查找」操作而沒有任何問題。

但是,當我嘗試運行下面的代碼時,它永遠不會返回並且LogCat以「GC_CONCURRENT已釋放2032K,15%空閒20186K/23623K,暫停12ms + 10ms,總共166ms」爲淹沒。

如果有人能幫助我,我會很高興!我搜索了這個網站和谷歌,但沒有找到任何東西!感謝您的幫助!

我的代碼:

EvernoteSession session = getEvernoteSession(ctx); 

    try { 
     session.getClientFactory().createNoteStoreClient().getNote(noteID, true, false, false, false, new OnClientCallback<Note>() { 

      @Override 
      public void onSuccess(Note data) { 
       receiver.newData(data.getContent().toString()); 
       data = null; 
       System.gc(); 
      } 

      @Override 
      public void onException(Exception exception) { 
       receiver.newData(ctx.getString(R.string.error_while_receiving_note)); 
      } 
     }); 
    } catch (TTransportException e) { 
     receiver.newData(ctx.getString(R.string.error_while_receiving_note)); 
    } 

回答

0

首先,請確保GC消息從你的進程來。我喜歡使用

adb logcat -v threadtime 

查看與每條消息關聯的pid和tid。使用

adb shell ps 

檢查GCing pid是否是您的應用程序。

其次,你會想看看到底什麼是分配所有的內存。最好的工具是DDMSAllocation Tracker,可單獨使用或集成到Eclipse + ADT中。它會顯示所選應用程序執行的最後512個分配,因此如果在GC消息傳送時運行它,應該能夠看到分配的內容以及代碼片段。

0

首先我需要說的是,我是一名Evernote員工。我最近開發了新版本的Android SDK,並發現了類似的bug。原因是底層字節存儲中存在一個問題,它會標記數據並將其發送到服務器。

此錯誤是固定的新版本2.0.0:https://github.com/evernote/evernote-sdk-android

隨意在Github上創建一個問題,如果這個問題仍然存在。