Я получаю и устанавливаю sharedPreferences в классе конструктора
private Context context;
public NewBusiness (Context c) {
this.context = c;
pref = android.preference.PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
pref = context.getSharedPreferences("MyPref", 0);
editor = pref.edit();
}
public String getLogo() {
return pref.getString("logo", logo);
}
public void setLogo(String logo) {
editor.putString("logo", logo);
editor.commit();
}
Однако я вызываю это из задачи Asyn c (которая использует контекст WeakReference для предотвращения утечек памяти)
private WeakReference<Context> contextRef;
public UploadBusiness(Context context) {
contextRef = new WeakReference<>(context);
}
@Override
protected String doInBackground(Void... params) {
newBusiness = new NewBusiness(contextRef); //Can´t use WeakReference<Context>
return "Upload successful";
}
Проблема в том, что контекст weakreference не может быть передан как контекст
Как мне вызвать мой класс конструктора с контекстом, не вызывая утечки памяти?