代码之家  ›  专栏  ›  技术社区  ›  Vivek Nuna Chetan sabhaya

如何将大数据从本地Java发送到JavaScript?

  •  0
  • Vivek Nuna Chetan sabhaya  · 技术社区  · 7 年前

    我正在开发一个Android应用程序,我有一个很大的JSON字符串,在Java本地代码中大约有5mb。我需要将这个字符串从Java代码发送到JavaScript(JS文件在assets文件夹中)。当我运行应用程序时,它会挂起。

    public String readFileDataofIamge()
    {
        StringBuilder text = new StringBuilder();
        String FILE_NAME = "ImageDataFile.txt";
        try {
    
            BufferedReader reader = new BufferedReader(new InputStreamReader(openFileInput(FILE_NAME)));
            while ((line=reader.readLine())!=null) {
                text.append(line.toString());}
            reader.close();
        }
        catch (Exception e) {
        }
    
        return text.toString();
    }
    
    @JavascriptInterface
    public String readImageData()
    {
        return readFileDataofIamge();
    }
    

    JS代码:

    function getDatafromFile() {
        var imageData=Android.readImageData();
    }
    

    你好,世界

    那么,是否可以将这些大数据从本机代码发送到JavaScript代码?如果不可能,是否有其他方法将大数据从本机代码发送到JS代码?

    给定条件: 没有internet连接,因此无法进行任何HTTP或网络调用。

    ============================================================================

    应用程序概述:

    因此,为了满足这个需求,我尝试将这些数据(大约20 MB)写入内部存储文件,并尝试读取这个文件并将数据发送到JavaScript代码。但没用。

    我曾想过使用SQLite DB而不是存储在文件中,但我想在将数据从本机代码发送到JS代码时也会遇到同样的问题。

    所以你们能建议一些更好的方法吗。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Rene Ferrari    7 年前

    如果将数据存储在数据库中,问题就不会得到解决 除非 你不会一下子就需要整个文件。

    REST 或者类似的,你可以访问代码,你可以挂接请求并将它们发送到应用程序的Java/Kotlin部分。否则您可以使用WebViews interceptRequest .

    一旦您能够获得请求,就可以从 database

    例子: GET users/all . 通过调用Java方法的钩子截获该请求,然后返回结果 或者 Select * from USER . 然后返回结果。

    既然你在处理 JSON NOSQL 类似数据库 CouchbaseLite JSON格式 POJO 回到 JSON格式 一旦你归还/再次储存。或者使用 SQLite 数据库。为此,您必须转换 JSON格式 POJOs 然后储存起来。

    如果后端(从那里获得JSON)允许您同时获得不同的模型类型而不是所有的类型(否则您可能会遇到内存问题),那就太好了。你可以用 Retrofit 用于网络和 Moshi or Gson 为了你的转变 波乔

    如果没有 请求或类似的请求,您需要立即获得整个文件。老实说,我想说没有办法愉快地处理这件事。