【问题标题】:Android - Evernote API getContent() GC_CONCURRENTAndroid - Evernote API getContent() GC_CONCURRENT
【发布时间】:2013-11-01 18:39:08
【问题描述】:

我尝试从 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));
    }

【问题讨论】:

    标签: android evernote


    【解决方案1】:

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

    adb logcat -v threadtime
    

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

    adb shell ps
    

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-16
        • 2012-11-26
        • 2017-08-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多