Я использую Realm для локальной базы данных, я использовал в Timer и каждые 40 секунд проверял, существуют ли данные, я устанавливаю переменные syn c, после этого процесса я закрывал область realm.close , мне интересно, что , Является ли приведенный ниже код утечкой памяти, потому что я создаю объект Realm каждые 40 секунд, я закрыл его, наконец, но у меня есть сомнения по этому поводу? это вызывает утечку памяти или нет
//Timer starts for sending LogTable data
Log.i("Timer Start","Start Timer");
timer = new Timer();
timerTask = new TimerTask() {
@Override
public void run() {
jsonArray = new JsonArray();
jsonObject = new JsonObject();
//Realm.init(context);
Realm realm = Realm.getDefaultInstance();
try {
realm.executeTransaction(realm1 -> {
//getting all data from realm DB
RealmResults<LogTable> realmResults = realm.where(LogTable.class).equalTo("sync", (String) null).findAll();
Log.i("RealmResults Login Table:", "" + realmResults.size());
for (int i = 0; i < realmResults.size(); i++) {
jsonObject.addProperty("dev_userid", realmResults.get(i).getDev_userid());
jsonObject.addProperty("date", realmResults.get(i).getDate());
jsonObject.addProperty("logtype", realmResults.get(i).getLogtype());
jsonObject.addProperty("logtext", realmResults.get(i).getLogtext());
jsonObject.addProperty("logErrorCode", realmResults.get(i).getLogErrorCode());
jsonArray.add(jsonObject);
if (i != 0) {
mSocket.emit("signalSendDeviceLogRtc", jsonArray.toString(), (Ack) args -> {
Log.i("callback of LogRtc", "" + args);
Object result = args[0];
if (result.equals(true)) {
Log.i("reult of LogRtc", "" + result);
Realm realm2 = Realm.getDefaultInstance();
try {
RealmResults<LogTable> realmResults2 = realm2.where(LogTable.class).equalTo("sync", (String) null).findAll();
realm2.executeTransaction(realm21 -> {
int count = 0;
for (LogTable logTable : realmResults2){
logTable.setSync("1");
count++;
if (count == 10)
break;
}
});
}catch (Exception e){
e.printStackTrace();
}finally {
realm2.close();
}
}
});
jsonArray = new JsonArray();
jsonObject = new JsonObject();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}finally {
realm.close();
}
Log.i("Timer","Works");
}
};
timer.scheduleAtFixedRate(timerTask,1000,40000);