HTTP kommunikáció Androidon HttpClient-en keresztűl HttpPost/HttpGet objektum használatával HttpClient execute metódusának meghívása
HttpPost HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(SERVER_ADDRESS); try { List params = new ArrayList (); params.add(new BasicNameValuePair("text", texts[0])); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse response = httpClient.execute(httpPost); } catch (Exception e) { e.printStackTrace(); } Ez így már működik, de van vele egy kis gond...
UI Thread blokkolása Nem szerencsés User-t zavarja Rendszer kilőheti az appot (ANR) Hálózati kommunikáció nem megengedett Többféle megoldás Runnable – runOnUIThread AsyncTask
AsyncTask Automatikusan kezeli a szálváltást Saját osztályt kell belőle származtatni Meg van a saját életciklusa doInBackground Háttérben fut OnPostExecute UI Thread-en fut
AsyncTask példa private class SendTask extends AsyncTask protected Void doInBackground(String... texts) { HttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(SERVER_ADDRESS); try { List params = new ArrayList (); params.add(new BasicNameValuePair("text", texts[0])); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse response = httpClient.execute(httpPost); } catch (Exception e) { e.printStackTrace(); } return null; } Futtatás: new SendTask().execute(new String[] { param });