如何在Android中的活动之间传递大数据(JSON)?

时间:2017-05-10 10:32:44

标签: android json android-activity realm

我正在使用Volley,我可以从URL获得respose .Response jsonObject就是这样 This is response

我有一个问题。我想在活动之间传递这些数据。这是正确的方法吗? 我正在使用领域数据库。我在我的数据库和另一个活动中插入了这个json,我选择了这个json。这是正确的方法吗? 问题是,当加载完成后,第二个活动不会立即启动。 这是我的java代码

 getActivity().runOnUiThread(new Runnable() {
                        @Override
                        public void run() {

                            realm.executeTransaction(new Realm.Transaction() {
                                @Override
                                public void execute(Realm realm) {
                                    TrainMainDBModel trainMainDBModel = realm.createObject(TrainMainDBModel.class);
                                    try {
                                        trainMainDBModel.setTrainsJson(jsonObject.getString("data"));
                                        trainMainDBModel.setAdults(Integer.parseInt(adultsValue.getText().toString()));
                                        trainMainDBModel.setChild(Integer.parseInt(childValue.getText().toString()));

                                        realm.insertOrUpdate(trainMainDBModel); 
                                        Intent intent = new Intent(getActivity(), TrainsActivity.class);

                                        startActivity(intent);
                                        getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
                                    } catch (JSONException e) {
                                        e.printStackTrace();
                                    }


                                }
                            });


                        }

当我喜欢这些大数据时,是否有可能立即开始第二项活动? 感谢

2 个答案:

答案 0 :(得分:0)

您应该在后台线程上执行事务。

                   realm.executeTransactionAsync(new Realm.Transaction() {
                            @Override
                            public void execute(Realm realm) {
                                TrainMainDBModel trainMainDBModel = realm.createObject(TrainMainDBModel.class);
                                try {
                                    trainMainDBModel.setTrainsJson(jsonObject.getString("data"));
                                    trainMainDBModel.setAdults(Integer.parseInt(adultsValue.getText().toString()));
                                    trainMainDBModel.setChild(Integer.parseInt(childValue.getText().toString()));
                                } catch (JSONException e) {
                                    e.printStackTrace();
                                }


                            }
                        }, new Realm.Transaction.OnSuccess() {
                            @Override
                            public void onSuccess() {
                                 Intent intent = new Intent(getActivity(), TrainsActivity.class);
                                 startActivity(intent);    
                                 getActivity().overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out);
                            }
                        });

然后,您可以在其他活动中按ID查询此对象。

  TrainMainDBModel trainMainDbModel = realm.where(TrainMainDBModel.class)
                                           .equalTo("id", getIntent().getExtras().getInt("trainId"))
                                           .findFirst();

答案 1 :(得分:-1)

您正在主线程上执行领域操作,这将滞后您的布局,因此我建议您将这些数据保存在

关于响应方法的排球 + 创建班级模型 + 使用您的模型类创建ArrayList + 然后使用来自一个活动的意图传递它

它比REALM DB更快。