В каких случаях использовать ThreadLocal context?

207
04 июля 2018, 20:00

Студия предлагает использовать private final ThreadLocal context = new ThreadLocal(); вместо private Context context; Это может предотвратить утечку памяти?

public class FetchEditTask extends AsyncTask<Void, Void, Pic> {
private Pic picResult = new Pic();
private final ThreadLocal<Context> context = new ThreadLocal<Context>();
private AsyncResponse output;
private int index;
public FetchEditTask(Context context, AsyncResponse output, int index) {
    this.context.set(context);
    this.output = output;
    this.index = index;
}
@Override
protected Pic doInBackground(Void... params) {
    Retrofit retrofit = new Retrofit.Builder()
            .baseUrl(context.get().getResources().getString(R.string.pixabay_api_link))
            .addConverterFactory(GsonConverterFactory.create())
            .build();
    ApiService client = retrofit.create(ApiService.class);
    Call<Pic> call;
    call = client.getEditorPic(index);
    call.enqueue(new Callback<Pic>() {
        @Override
        public void onResponse(Call<Pic> call, Response<Pic> response) {
            try {
                if (!response.isSuccessful()) {
                    Log.d(context.get().getResources().getString(R.string.No_Success), response.errorBody().string());
                } else {
                    picResult = response.body();
                    if (picResult != null) {
                        output.processFinish(picResult);
                    }
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        @Override
        public void onFailure(Call<Pic> call, Throwable t) {
            Toast toast = Toast.makeText(context.get(), context.get().getResources().getString(R.string.wrong_message), Toast.LENGTH_SHORT);
            toast.show();
        }
    });
    return picResult;
}
}
READ ALSO
TelegramApiRequestException при запуске Telegram бота

TelegramApiRequestException при запуске Telegram бота

Пытаюсь создать бота для телеграммКласс Bot:

185
Доступ к конструктору класса только из одного класса в другом пакете

Доступ к конструктору класса только из одного класса в другом пакете

Есть 2 отдельных пакета и в каждом по 1му классу (условно 1c и 2c)

179
Failed with error: Could not read from remote repository

Failed with error: Could not read from remote repository

Не могу запушить проект на гитхабПользуюсь Intelliji Idea

152
Вставка файла из буфера gui

Вставка файла из буфера gui

Подскажите пожалуйста как реализовать возможность вставки скопированного в системный буфер обмена файлаКопирую так:

228