서버에서 JSON 파일로 데이터를 검색하고 각 작업에 대해 영역 개체를 만들려고합니다.UI 스레드가 멈추는 여러 영역 트랜잭션
public void onResponse(JSONObject response) {
try {
JSONArray activities = response.getJSONArray("activities");
Realm realm = Realm.getDefaultInstance();
int numOfActivities = activities.length();
for(int i = 0; i < numOfActivities; i++) {
JSONObject activity = activities.getJSONObject(i);
realm.beginTransaction();
RunSummaryObject curr = realm.createObject(RunSummaryObject.class);
try {
curr.setId(activity.getLong("id"));
realm.commitTransaction();
} catch (io.realm.exceptions.RealmPrimaryKeyConstraintException e) {
realm.cancelTransaction();
}
}
realm.close();
} catch (JSONException e) {
e.printStackTrace();
}
코드는 안드로이드 AsyncTask로 인스턴스화 된 새 스레드 내에서 실행됩니다.
private class syncRunData extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... voids) {
downloadRunData();
return null;
}
}
70 개 미만의 활동으로 UI 스레드가 중단되었습니다. 트랜잭션이 커밋되지 않도록 모든 객체가 이미 영역에 있으므로 두 번 실행하면 동일한 코드가 고정되지 않습니다. UI 스레드가 멈추는 것을 피하려면 어떻게해야합니까?
UI가 귀하의 영역에서 어떤 작업을 수행합니까? 나는 특히 쓰기 거래에 대해 생각하고 있습니다. – geisshirt