我正在使用Volley,我可以从URL获得respose .Response jsonObject就是这样
我有一个问题。我想在活动之间传递这些数据。这是正确的方法吗? 我正在使用领域数据库。我在我的数据库和另一个活动中插入了这个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();
}
}
});
}
当我喜欢这些大数据时,是否有可能立即开始第二项活动? 感谢
答案 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更快。