Мне нравится подсчитывать несколько вещей в моем приложении и сохранять значение в общих настройках Android.Все работает, но меня не устраивает дизайн класса в целом.
Очень простой абстрактный класс.Параметр класса используется для именования ключей в sharedPreferences.
public abstract class Counter {
private Context mContext;
private Class mClass;
Counter(Class myClass, Context context) {
this.mClass = myClass;
this.mContext = context;
}
public Integer getValue() {
return PrefManager.with(mContext).getInt(mClass.getName(), 0);
//return UniversalPreferences.getInstance().get(counterName, 1);
}
public void increment() {
PrefManager.with(mContext).save(mClass.getName(), getValue() + 1);
//UniversalPreferences.getInstance().put(counterName, getCurrentValue(counterName) + 1);
}
}
До сих пор у меня уже есть 5 классов, унаследованных от Counter с одинаковым содержимым.
public class CounterAppLaunch extends Counter {
@SuppressLint("StaticFieldLeak")
private static CounterAppLaunch instance;
private CounterAppLaunch(Context context) {
super(CounterAppLaunch.class, context);
}
public static CounterAppLaunch getInstance(Context context) {
if(CounterAppLaunch.instance == null) {
CounterAppLaunch.instance = new CounterAppLaunch(context);
}
return CounterAppLaunch.instance;
}
}
У меня есть счетчики, которые мне нравятсявызов из разных классов и увеличение там (например, CounterAPICall или CounterOnResumeCallExample).Который работает с этим кодом просто отлично.