Тост в AsyncTask в классе Non Activity

У меня есть класс non Activity, который содержит AsyncTask, который вызывает URL-адрес. Если время ожидания соединения по некоторым причинам, я хочу, чтобы пользователь знал об этом, разместив Toast. Но я просто не могу получить контекст.

Как это можно добиться?

RPIcall.class

import android.os.AsyncTask; import android.util.Log; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.methods.HttpGet; import org.apache.http.conn.HttpHostConnectException; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import java.io.IOException; class RPicall extends AsyncTask<String, String, Void> { @Override protected Void doInBackground(String... uri) { int timeoutSocket = 3000; int timeoutConnection = 3000; try{ Log.v("call URL: ", uri[0]); HttpGet httpGet = new HttpGet(uri[0]); HttpParams httpParameters = new BasicHttpParams(); // Set the timeout in milliseconds until a connection is established. // The default value is zero, that means the timeout is not used. HttpConnectionParams.setConnectionTimeout(httpParameters, timeoutConnection); // Set the default socket timeout (SO_TIMEOUT) // in milliseconds which is the timeout for waiting for data. HttpConnectionParams.setSoTimeout(httpParameters, timeoutSocket); DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters); HttpResponse response = httpClient.execute(httpGet); } catch (ClientProtocolException e) { //Here Connection TimeOut excepion //Toast.makeText(, "Your connection timedout", Toast.LENGTH_SHORT).show(); Log.v("Server not Reachable: ", uri[0]); publishProgress("TimeOut"); } catch (HttpHostConnectException e) { Log.e("Server not Reachable: ", uri[0]); } catch (IOException e) { e.printStackTrace(); } return null; } @Override protected void onPostExecute(Void result) { super.onPostExecute(result); String test = "test"; Log.v("finished: ", test); } } 

Шаг # 1: добавьте конструктор в RPicall который принимает Context , сохраняя его в элементе данных.

Шаг №2: Используйте этот Context в onPostExecute() чтобы отобразить ваш Toast .

Шаг №3: Перейдите в подходящий Context при создании экземпляра RPicall .

Определите конструктор, который принимает объект Context в качестве параметра и сохранит его как член класса. Например:

 class RPicall extends AsyncTask<String, String, Void> { private final Context mContext; public RPicall(Context c) { mContext = c; } }