Я делаю приложение, и у меня есть эта функция, которая бесконечно присваивает строку UserPreference, и я не понимаю, почему.
Java-файл:
public class generalSettings extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.general_settings);
List<Schedule> schedules = getSchedule();
if (schedules.isEmpty()) {
from.setSummary("--:--");
to.setSummary("--:--");
} else {
from.setSummary(schedules.get(0).getStartTime());
to.setSummary(schedules.get(0).getEndTime());
}
private List<Schedule> getSchedule() {
String cameraServiceSchedule = UserSharedPref.initializeSharedPreferencesForcameraServiceSchedule(getApplicationContext()).getString(UserSharedPref.cameraServiceSchedule, "");
String[] scheduleStrings = cameraServiceSchedule.split(";");
List<Schedule> schedules = new ArrayList<>();
Log.d("TESTa:",cameraServiceSchedule);
for (String scheduleString : scheduleStrings) {
String[] times = scheduleString.split(",");
if (times.length == 2) {
try {
Log.d("TEST:","adding only 1");
schedules.add(new Schedule(Integer.parseInt(times[0]), Integer.parseInt(times[1])));
break;
} catch (NumberFormatException ex) {
Log.d("TEST:","getting a NumberFormatException");
ex.printStackTrace();
}
}
}
return schedules;
}
}
}
Schedule.java:
public class Schedule {
private Integer startTime;
private Integer endTime;
public Schedule() {
}
public Schedule(Integer startTime, Integer endTime) {
this.startTime = startTime;
this.endTime = endTime;
}
public Integer getStartTime() {
return startTime;
}
public void setStartTime(Integer startTime) {
this.startTime = startTime;
}
public Integer getEndTime() {
return endTime;
}
public void setEndTime(Integer endTime) {
this.endTime = endTime;
}
}
Когда я регистрирую это, 2018-11-01 17:19:27.445 4346-4346/? D/TESTa:: 891,1131;
в разное время печатается непрерывно до запуска приложения.
Итак, Testa печатает бесконечно, что является результатом логирования cameraServiceSchedule
, который только что инициализирован из файла пользовательских настроек, но почему, он даже не находится в цикле, чтобы инициализироваться снова и снова.
и один и тот же объект schedules.get(0)
перезаписывается снова и снова, когда я делаю это List<Schedule> schedules = getSchedule();
, я также регистрировал это. Есть ли обходной путь для этого?