【问题标题】:Cordova Limits of File.System.Plugin - developed using Visual Studio hybrid device apps extentionFile.System.Plugin 的 Cordova 限制 - 使用 Visual Studio 混合设备应用程序扩展开发
【发布时间】:2014-10-03 10:03:04
【问题描述】:

我是科尔多瓦的新手。我做了我的第一个 Little App 并成功地将它部署到 Windows 8 和 Android。现在我开始测试文件系统插件。

我做了一个小测试应用程序,它创建了一个给定大小的文本文件。结果:

  • 在 Android 上,应用程序在 10 到 15 MB 的文件大小之间停止响应且没有错误消息
  • 在 Windows 8 上,应用程序在创建大于 40 KB(不是 MB !!!它是 KB)的文件时崩溃且没有错误消息
  • 在 Ripple Emulator 上,文件系统插件实际上不受支持

(编辑:对于 Windows 8,现在保存 Blob 时 Cordova 代码中存在一个错误。因此,如果将代码更改为仅保存纯字符串,我可以设法将文件保存到 1 GB - 此更改有Android 没有 Effekt 所以,仍然有 10 MB 的限制 :EditEnd)

我基本上只是从 HTML5 Rocks 文档中复制了代码并构建了一个更大的字符串来存储...

那么限制是什么,或者我在这里做错了什么?任何帮助都会很棒!

你好,马库斯

这是我的代码:

function writeFile() {
    window.requestFileSystem(window.PERSISTENT, 5 * 1024 * 1024 /*5MB*/, onInitFsWrite, errorHandler);
}

function onInitFsWrite(fs) {
    console.log('Opened file system: ' + fs.name);

    fs.root.getFile(_fileName, {}, function (fileEntry) {

        // Create a FileWriter object for our FileEntry (log.txt).
        fileEntry.createWriter(function (fileWriter) {

            fileWriter.onwriteend = function (e) {
                msgOut('Write completed.');
            };

            fileWriter.onerror = function (e) {
                msgOut('Write failed: ' + e.toString());
            };

            //create some data
           var text = "1234567890".repeat(parseInt($("#length").val()));

            // Create a new Blob and write it to log.txt.
            var blob = new Blob([text], { type: 'text/plain' });

            fileWriter.write(blob);

        }, errorHandler);

    }, errorHandler);
}

String.prototype.repeat = function (num) {
    return new Array(num + 1).join(this);
}

【问题讨论】:

    标签: cordova ripple multi-device-hybrid-apps


    【解决方案1】:

    试试window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onInitFsWrite, errorHandler);

    Cordova 的 requestFileSystem API 实现使用 LocalFileSystem 对象而不是窗口对象

    【讨论】:

    • 感谢您的回答,但这并没有改变任何东西。我不确定,但我想我找到了限制的原因。 Android 应用程序具有最大内存使用量,看起来 RAM 使用量是问题所在,而不是写入文件的限制。在我的示例代码中,我构建了一个大字符串并将其传递给本机层,它可能会被复制过来,并且该字符串是 UNICODE,因此每个字符都有两个字节,因此操作达到了 Android 的 RAM 限制应用。在本机代码中我有类似的问题,但如果我使用流技术,一切正常......
    • @Markus 我也是这么想的,但最近我设法将 rikaikun 的一部分移植到了 android 上的 phonegap。字典占用了 70MB,我实际上可以加载它,但是:a)我必须使用良好的旧 ajax 请求来做到这一点 b)这仅适用于应用程序本身包含的文件(我无法使用 XHR 访问任何外部文件)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多