2015-02-09 20 views
0
執行的AsyncTask我使用的是 AsyncTask在我的代碼,以獲得

不能內的AsyncTask

  1. 位置

  2. 緯度和經度從該位置

每當我打電話​​方法在我的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()方法的第二行。 (註釋)。

+0

嘗試新的GetLatLong(context,s).execute()...在另一邊檢查上下文或s ...兩者中的任何一個都可以爲null .. – kgandroid 2015-02-09 11:39:11

+0

我試過了,但是仍然有同樣的錯誤ni沒有檢查過任何東西null – Anuj 2015-02-09 12:03:56

+0

只需粘貼您的logcat詳細信息。 – Sajithv 2015-02-11 08:28:30

回答

0

這將導致無限循環。您可以查看this發佈以獲得理想的結果。