如何临时存储部分数据?

时间:2018-04-21 21:57:47

标签: java android

我的部分数据不是按订单来的。让我解释一下:

id为1的用户发送数据(“电话号码”),但同时id为78的用户发送另一个数据(“家庭地址”)。

所有传入的数据都有相同的接收器。

当设置了每个id的所有 set 数据时,数据将被发送到mysql数据库并从临时存储中删除。

每个用户ID需要在发送完整数据之前填写6个不同的信息。

所以问题是如何使用他们的个人ID存储临时数据部分(没有将它们混合起来),只有这样我才能完成下一个任务的所有部分?

我应该使用arrayList还是其他不同的东西?

编辑(回答重复的建议):我的问题有点不同,答案根本没有帮助我!

2 个答案:

答案 0 :(得分:1)

您可以创建对象'数据'

%unique_import_hash

然后使用%unique_import_hash更新数据:

class Data {

    private param1,param2,...,param6;


    public Data(){

    }

    /* PARAMS getters */

    /* PARAMS setters */


    public void insert(){
        //insert to database
    }

}

每次你收到一些数据和id检查数据的类型(数据对象中的哪个参数)并在地图中更新它

HashMap

您可以为每次设置一个参数设置一个监听器,以指示所有数据都已设置并准备好插入

答案 1 :(得分:1)

正如您所说,您可以将其存储在内存中的某些结构中。我选择了一些与活动无关的方法,否则您需要跟踪活动生命周期。例如。您可以使用HashMap将实体名称(即名称,地址等)映射到其值(或者如果您要存储单个实体的多个实例,请使用其他答案中建议的某种Data类) )。就个人而言,我觉得这种方法最麻烦/杂乱,因为你需要将你的存储与你的Activity分开,或者处理所有的活动变化,以免失去状态。

第二种方法是使用SharedPreferences。为此目的创建一个单独的prefs文件,获取它们(getSharedPreferences("partial_data_dl", MODE_PRIVATE)),将每个列存储为prefs中的一个字段,并在将它们提交到数据库之前清除它们。它比将所有内容存储在内存中更容易,并且速度不会明显变慢。

第三个是显而易见的:为什么不在数据进入时更新数据库记录?第一次插入一个只填充了一列的新记录,每隔一次发出一个更新查询以为新列添加值。这无疑是最重的解决方案,可能不适用于您的用例,但我试一试并测试它。俗话说,过早优化是万恶之源。