Продолжение: this post's Question.Как добавить тему?
Я не могу понять, как добавить отдельный поток из основного потока пользовательского интерфейса, чтобы выполнить сбор данных с сервера. Я никогда не делал нити раньше, и я думаю, что этот экземпляр в моем построенном классе делает его немного более продвинутым, чем любой из примеров, которые я могу найти.
Любая помощь и опубликованная ревизия моего класса будут оценены.
Thank_you!
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle extras = getIntent().getExtras();
setContentView(R.layout.list_view2);
/**
* Get the query string from last activity and pass it to this
* activity-----------------------------------------------------
*/
String p = null;
if (extras != null) {
p = extras.getString(PHP_KEY);
}
loadQuery(p);
}
void loadQuery(String p) {
String qO = getIntent().getStringExtra("QUERY_ORDER");
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
// http post
try {
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/App/php/" +
p + qO + ".php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
} catch (Exception e) {
Log.e("log_tag", "Error in http connection " + e.toString());
}
// convert response to string
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = "0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result = sb.toString();
} catch (Exception e) {
Log.e("log_tag", "Error converting result " + e.toString());
}
setListAdapter(new QueryAdapter(this, result));
}
Смотрите мой ответ ниже
Вы должны смотреть по адресу: //developer.android.com/reference/android/os/Handler.html Это самый простой способ управления из потоков пользовательского интерфейса и передавать результаты или данные в поток пользовательского интерфейса. –
Thnx. Я сделал, и я не могу понять, как реализовать его в моем коде без ошибок компиляции. @Jeremy D – CelticParser
@JeremyD я не знаю. Я думаю, что http://developer.android.com/reference/android/os/AsyncTask.html на самом деле проще. Вы всегда гарантированно выполняете onPostExecute() в основном потоке. Обработчик работает в потоке, который его создал. – AedonEtLIRA