0

我正在设计一个具有客户端和服务器端的 android 应用程序。主数据库位于每个 android 设备数据库都试图看起来像的服务器中。每当 Android 设备在线时,应用程序都会与服务器数据库(主数据库)同步。因为我可以通过在服务器中的数据库中添加、删除或更新来更改数据(用户不能在 Android 设备中更改数据库,即 Sqlite db)。同步后,Sqlite db 将被添加、删除或更新。

服务器数据库中有很多图像,我将所有数据作为 json 类型从 PHP 发送。

$datas = array('cats' => $cats, 'news' => $news, 'products' => $products);
$datas_json = (object) array('datas' => $datas);
$json = json_encode($datas_json);
echo $json;

该应用程序使用 BufferReader 进行读取。

HttpResponse response = httpclient.execute(httppost);
rd = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));

之后,我试图让所有数据都来自服务器作为字符串。速度确实存在问题。

public String parseFromBuffer(BufferedReader rd) throws IOException
{
    String line = "";
    String full = "";
    while ((line = rd.readLine()) != null) 
    {
        full += line;
    }
    return full;
}

因为,如果您认为只有一张图像可能有 100.000 个字符(在 PHP 端,我使用 base64 图像来发送 java 并再次使用 java 解码。),想象一下 1000 张图像!因此,有时使用这种方式获得 4-5 张图像需要 1-2 分钟。得到 ' full' 字符串后(它可能有 1.000.000 个字符!),我使用 jsonParser 来获取数据。

public jsonParser(String json_string) throws JSONException
{
    json = new JSONObject(json_string);
}
...
public void parseJson() throws JSONException
{
    JSONObject datas = json.getJSONObject("datas");

JSONArray cats = datas.getJSONArray("cats");
for(int i = 0; i < cats.length(); i++)
{
    JSONObject c = cats.getJSONObject(i);

    cat_id.add(c.getInt("cat_id"));
    cat_name_tr.add(c.getString("cat_name_tr"));
    cat_name_eng.add(c.getString("cat_name_eng"));
    cat_upper_id.add(c.getInt("cat_upper_id"));
    cat_order.add(c.getInt("cat_order"));
}
...

最后,我插入、更新或删除来自jsonParser()sqlite db 的数据。

简而言之,我有一个问题,或者我需要关于跨服务器客户端获取图像的速度以及parseFromBuffer()方法的解决方案。你可以提出任何建议,你可以批评我这样做的方式,也许我应该序列化一些东西,也许我应该以某种方式将服务器中的所有图像下载到“res”文件夹......

提前致谢。

4

0 回答 0