Call methods of GA on the main thread to avoid ConcurrentModificationException
This commit is contained in:
parent
07b989f00e
commit
14ff42daf7
@ -23,6 +23,7 @@
|
|||||||
package org.solovyev.android.calculator;
|
package org.solovyev.android.calculator;
|
||||||
|
|
||||||
import android.content.SharedPreferences;
|
import android.content.SharedPreferences;
|
||||||
|
import android.os.AsyncTask;
|
||||||
import android.os.Handler;
|
import android.os.Handler;
|
||||||
import android.preference.PreferenceManager;
|
import android.preference.PreferenceManager;
|
||||||
import android.support.annotation.NonNull;
|
import android.support.annotation.NonNull;
|
||||||
@ -52,6 +53,27 @@ import jscl.MathEngine;
|
|||||||
|
|
||||||
public class CalculatorApplication extends android.app.Application implements SharedPreferences.OnSharedPreferenceChangeListener {
|
public class CalculatorApplication extends android.app.Application implements SharedPreferences.OnSharedPreferenceChangeListener {
|
||||||
|
|
||||||
|
// delayed GA reporting in order to avoid initialization of GA on the main
|
||||||
|
// application thread and to postpone it as much as possible
|
||||||
|
private class GaInitializer extends AsyncTask<Void, Void, Ga> {
|
||||||
|
@NonNull
|
||||||
|
private final SharedPreferences prefs;
|
||||||
|
|
||||||
|
GaInitializer(@NonNull SharedPreferences prefs) {
|
||||||
|
this.prefs = prefs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected Ga doInBackground(Void... params) {
|
||||||
|
return ga.get();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPostExecute(@NonNull Ga ga) {
|
||||||
|
ga.reportInitially(prefs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
@Named(AppModule.THREAD_INIT)
|
@Named(AppModule.THREAD_INIT)
|
||||||
Executor initThread;
|
Executor initThread;
|
||||||
@ -149,11 +171,9 @@ public class CalculatorApplication extends android.app.Application implements Sh
|
|||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
warmUpEngine();
|
warmUpEngine();
|
||||||
// delayed GA reporting in order to avoid initialization of GA on the main
|
|
||||||
// application thread and to postpone it as much as possible
|
|
||||||
ga.get().reportInitially(prefs);
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
new GaInitializer(prefs).executeOnExecutor(initThread);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void warmUpEngine() {
|
private void warmUpEngine() {
|
||||||
|
Loading…
Reference in New Issue
Block a user