0

我尝试从 Evernote Android API 获取笔记的内容。

我已成功通过服务进行身份验证,我可以毫无问题地执行“查找”操作。

但是当我尝试运行以下代码时,它永远不会返回,并且 LogCat 会出现“GC_CONCURRENT freed 2032K, 15% free 20186K/23623K, paused 12ms+10ms, total 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));
    }
4

2 回答 2

0

首先,确保 GC 消息来自您的进程。我喜欢用

adb logcat -v threadtime

查看与每条消息关联的 pid 和 tid。利用

adb shell ps

检查 GCing pid 是否是您的应用程序。

其次,你会想看看到底是什么分配了所有的内存。最好的工具是DDMS Allocation Tracker,它可以独立使用,也可以集成到 Eclipse+ADT 中。它将向您显示所选应用程序执行的最后 512 次分配,因此如果您在 GC 消息飞行时运行它,您应该能够看到正在分配的内容以及由哪段代码分配。

于 2013-10-23T17:52:57.453 回答
0

首先我需要说明我是 Evernote 的员工。我最近开发了新版本的 Android SDK 并注意到了一个与您类似的错误。原因是底层字节存储存在问题,它标记数据并将其发送到服务器。

新版本 2.0.0 修复了此错误:https ://github.com/evernote/evernote-sdk-android

如果问题仍然存在,请随意在 Github 上创建问题。

于 2015-05-28T20:59:30.287 回答