synchronized access to log in nsclient

This commit is contained in:
Milos Kozak 2018-03-23 22:37:27 +01:00
parent 22d617cbc0
commit cbd60cfdbe
4 changed files with 17 additions and 12 deletions

View file

@ -48,7 +48,7 @@ public class NSClientInternalPlugin implements PluginBase {
static public Handler handler;
private static List<EventNSClientNewLog> listLog = new ArrayList<>();
private final static List<EventNSClientNewLog> listLog = new ArrayList<>();
static Spanned textLog = Html.fromHtml("");
public boolean paused = false;
@ -177,7 +177,9 @@ public class NSClientInternalPlugin implements PluginBase {
handler.post(new Runnable() {
@Override
public void run() {
listLog = new ArrayList<>();
synchronized (listLog) {
listLog.clear();
}
MainApp.bus().post(new EventNSClientUpdateGUI());
}
});
@ -187,10 +189,12 @@ public class NSClientInternalPlugin implements PluginBase {
handler.post(new Runnable() {
@Override
public void run() {
listLog.add(ev);
// remove the first line if log is too large
if (listLog.size() >= Constants.MAX_LOG_LINES) {
listLog.remove(0);
synchronized (listLog) {
listLog.add(ev);
// remove the first line if log is too large
if (listLog.size() >= Constants.MAX_LOG_LINES) {
listLog.remove(0);
}
}
MainApp.bus().post(new EventNSClientUpdateGUI());
}
@ -200,9 +204,10 @@ public class NSClientInternalPlugin implements PluginBase {
static synchronized void updateLog() {
try {
StringBuilder newTextLog = new StringBuilder();
List<EventNSClientNewLog> temporaryList = new ArrayList<>(listLog);
for (EventNSClientNewLog log : temporaryList) {
newTextLog.append(log.toPreparedHtml());
synchronized (listLog) {
for (EventNSClientNewLog log : listLog) {
newTextLog.append(log.toPreparedHtml());
}
}
textLog = Html.fromHtml(newTextLog.toString());
} catch (OutOfMemoryError e) {

View file

@ -448,7 +448,7 @@
<string name="settings_password">Парола за настройки</string>
<string name="unlock_settings">Отключи настройките</string>
<string name="approachingdailylimit">Близо до максмалния дневен инсулин</string>
<string name="nsclientinternal">вътрешен NSClient</string>
<string name="nsclientinternal">NSClient</string>
<string name="nsclientinternal_shortname">NSCI</string>
<string name="nsclientinternal_url">URL:</string>
<string name="nsclientinternal_autoscroll">Автопревъртане</string>

View file

@ -442,7 +442,7 @@
<string name="nosuccess">neúspěšně - zkontrolujte mobil</string>
<string name="notavailable">Nedostupný</string>
<string name="nowritepermission">NSClient nedostal oprávnění k zápisu. Špatné API secret?</string>
<string name="nsclientinternal">NSClient interní</string>
<string name="nsclientinternal">NSClient</string>
<string name="nsclientinternal_autoscroll">Posouvat</string>
<string name="nsclientinternal_secret_dialogmessage">Vložte API secret (min 12. znaků)</string>
<string name="nsclientinternal_shortname">NSCl</string>

View file

@ -261,7 +261,7 @@
<string name="ns_sync_use_absolute_title">только абсолютные величины для базала</string>
<string name="ns_upload_only">только передача в NS (синхронизация отсутствует)</string>
<string name="ns_upload_only_summary">только передача в NS. работает в SGV только если выбран местный источник вроде xdrip. не работает в профилях при действующем профиле NS</string>
<string name="nsclientinternal">внутренний клиент NS</string>
<string name="nsclientinternal">клиент NS</string>
<string name="nsclientinternal_autoscroll">автоскроллинг</string>
<string name="nsclientinternal_secret_dialogmessage">введите API secret для NS (мин 12 знаков)</string>
<string name="nsclientinternal_secret_dialogtitle">API secret для NS</string>