0
執行的AsyncTask我使用的是
AsyncTask
在我的代碼,以獲得
位置
緯度和經度從該位置
每當我打電話方法在我的AsyncTask
上,我收到以下錯誤。
錯誤:
java.lang.IllegalStateException: Cannot execute task: the task is already running.
類別:
public class GetPlaces extends AsyncTask<String, String, String> {
private Context context;
private GetPlaces getPlaces;
private AutoCompleteTextView autoCompleteTextView;
private static final String PLACES_API_BASE = "https://maps.googleapis.com/maps/api/place";
private static final String TYPE_AUTOCOMPLETE = "/autocomplete";
private static final String OUT_JSON = "/json";
private static final String API_KEY = "key=My key";
private String INPUT = "INPUT";
private HttpURLConnection urlConnection = null;
private StringBuilder stringBuilder = null;
private URL url;
private InputStream iStream = null;
private JSONObject jsonObject;
private JSONArray jsonArray;
private String description = "";
private GetLatLong getLatLong;
public GetPlaces(Context context, String INPUT, AutoCompleteTextView autoCompleteTextView) {
this.context = context;
this.INPUT = INPUT;
this.autoCompleteTextView = autoCompleteTextView;
this.execute(INPUT);
}
@Override
protected String doInBackground(String... params) {
String response = "";
try {
INPUT = "input=" + URLEncoder.encode(params[0], "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
String types = "types=geocode";
// Sensor enabled
String sensor = "sensor=false";
// Building the parameters to the web service
String parameters = INPUT + "&" + types + "&" + API_KEY + "&" + sensor;
stringBuilder = new StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON);
stringBuilder.append("?" + parameters);
//connections is established here
try {
url = new URL(stringBuilder.toString());
urlConnection = (HttpURLConnection) url.openConnection();
// Reading data from url
iStream = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(iStream));
StringBuffer sb = new StringBuffer();
String line = "";
while ((line = br.readLine()) != null) {
sb.append(line);
}
response = sb.toString();
Log.e("Response", response);
br.close();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
iStream.close();
} catch (IOException e) {
e.printStackTrace();
}
urlConnection.disconnect();
}
return response;
}
@Override
protected void onPostExecute(String s) {
getLatLong = new GetLatLong(context, s);
getLatLong.execute(s); // App crashes here
}
logcat的示出了它崩潰的onPostExecute()
方法的第二行。 (註釋)。
嘗試新的GetLatLong(context,s).execute()...在另一邊檢查上下文或s ...兩者中的任何一個都可以爲null .. – kgandroid 2015-02-09 11:39:11
我試過了,但是仍然有同樣的錯誤ni沒有檢查過任何東西null – Anuj 2015-02-09 12:03:56
只需粘貼您的logcat詳細信息。 – Sajithv 2015-02-11 08:28:30