fix a lag related to loading maps

This commit is contained in:
Starfish 2024-04-15 17:36:48 +02:00
parent 22643395d8
commit 1aee42d33d
2 changed files with 40 additions and 27 deletions

View File

@ -21,6 +21,7 @@
- new setting to force use of the higher resolution map despite lower device specs
- fix wrong dates shown in the weather maps activity when bitmaps were recycled from present data
- fix rain data loaded twice when rain radar data outdated
- fix a lag related to loading maps
## Version 0.62.0:

View File

@ -48,7 +48,8 @@ public class WeatherLayersActivity extends Activity {
TableRow tableRowBirke; TableRow tableRowHazel; TableRow tableRowErle; TableRow tableRowGraeser;
boolean forceWeatherUpdateFlag = false;
APIReaders.PollenReader pollenReader;
APIReaders.getLayerImages getLayerImages;
APIReaders.getLayerImages getLayerImagesConditional;
APIReaders.getLayerImages getLayerImagesForced;
Runnable conditionalUpdater;
Runnable unconditionalUpdater;
long unconditionalUpdateTime = 0;
@ -146,7 +147,16 @@ public class WeatherLayersActivity extends Activity {
}
};
weatherLayers = WeatherLayer.getLayers(context);
getLayerImages = new APIReaders.getLayerImages(context, weatherLayers) {
getLayerImagesForced = new APIReaders.getLayerImages(context, weatherLayers) {
@Override
public void onProgress(final WeatherLayer weatherLayer) {
runOnUiThread(new Runnable() {
@Override
public void run() {
updateLayer(weatherLayer);
}
});
}
@Override
public void onFinished(boolean success) {
if (success){
@ -157,7 +167,31 @@ public class WeatherLayersActivity extends Activity {
}
}
};
getLayerImages.setForceUpdate(true);
getLayerImagesForced.setForceUpdate(true);
/*
getLayerImagesConditional = new APIReaders.getLayerImages(context,weatherLayers){
@Override
public void onProgress(final WeatherLayer weatherLayer) {
runOnUiThread(new Runnable() {
@Override
public void run() {
updateLayer(weatherLayer);
}
});
}
@Override
public void onFinished(boolean result){
runOnUiThread(new Runnable() {
@Override
public void run() {
// nothing to do, update done in onProgress, view should be complete
//updateDisplay();
}
});
}
};
executor.execute(getLayerImagesConditional);
*/
conditionalUpdater = new Runnable() {
@Override
public void run() {
@ -169,7 +203,7 @@ public class WeatherLayersActivity extends Activity {
}
if (WeatherSettings.Updates.isSyncDue(context,WeatherSettings.Updates.Category.LAYERS)){
PrivateLog.log(context,PrivateLog.LAYERS,PrivateLog.INFO,"Layer data is outdated, updating layers...");
executor.execute(getLayerImages);
executor.execute(getLayerImagesForced);
} else {
PrivateLog.log(context,PrivateLog.LAYERS,PrivateLog.INFO,"Layers are up to date, using present data.");
}
@ -194,7 +228,7 @@ public class WeatherLayersActivity extends Activity {
unconditionalUpdateTime = Calendar.getInstance().getTimeInMillis();
PrivateLog.log(context,PrivateLog.LAYERS,PrivateLog.INFO,"Updating pollen data & layers unconditionally...");
executor.execute(pollenReader);
executor.execute(getLayerImages);
executor.execute(getLayerImagesForced);
executor.execute(new Runnable() {
@Override
public void run() {
@ -230,28 +264,6 @@ public class WeatherLayersActivity extends Activity {
executor.execute(pollenReader);
}
getViewIDs();
APIReaders.getLayerImages getLayerImages2 = new APIReaders.getLayerImages(context,weatherLayers){
@Override
public void onProgress(final WeatherLayer weatherLayer) {
runOnUiThread(new Runnable() {
@Override
public void run() {
updateLayer(weatherLayer);
}
});
}
@Override
public void onFinished(boolean result){
runOnUiThread(new Runnable() {
@Override
public void run() {
// nothing to do, update done in onProgress, view should be complete
//updateDisplay();
}
});
}
};
executor.execute(getLayerImages2);
TextView wm_heading_4_1 = findViewById(R.id.wm_heading_4_1);
TextView wm_heading_5_1 = findViewById(R.id.wm_heading_5_1);
if (wm_heading_4_1!=null){