我尝试从Evernote Android API获取笔记的内容。
我已成功通过该服务进行身份验证,我可以毫无问题地执行“查找”操作。
但是当我尝试运行以下代码时,它永远不会返回,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 :(得分:0)
首先,确保GC消息来自您的进程。我喜欢用
adb logcat -v threadtime
查看与每封邮件关联的pid和tid。使用
adb shell ps
检查GCing pid是否是您的应用。
其次,你会想知道究竟是在分配所有内存。最好的工具是DDMS Allocation Tracker,可单独使用或集成到Eclipse + ADT中。它将显示所选应用程序执行的最后512次分配,因此如果您在GC消息飞行时运行它,您应该能够看到正在分配的内容以及代码段。
答案 1 :(得分:0)
首先,我需要提一下,我是一名Evernote员工。我最近开发了新版本的Android SDK,并注意到了类似的错误。原因是底层字节存储中存在一个问题,它会对数据进行标记并将其发送到服务器。
此错误已在新版本2.0.0中修复:https://github.com/evernote/evernote-sdk-android
如果问题仍然存在,请随时在Github上创建一个问题。