Подскажите пожалуйста как реализовать асинхронный вызов
Код: Выделить всё
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(uri);
HttpResponse response = httpclient.execute(request);
Код: Выделить всё
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet();
request.setURI(uri);
HttpResponse response = httpclient.execute(request);
Код: Выделить всё
public class MainActivity extends Activity {
TextView tv;
Handler h = new Handler();
/** Called when the activity is first created. */
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv = (TextView) findViewById(R.id.tv);
}
public void onclick(View v) {
// запускаем новый поток, для асинхронного выполнения задачи runnabl
new Thread(runnabl).start();
}
// задача runnabl
Runnable runnabl = new Runnable() {
public void run() {
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpGet request = new HttpGet();
try {
URI uri = new URI("http://www.ya.ru");
request.setURI(uri);
// меняем TextView через Handler, т.к. напрямую нет доступа
h.post(new Runnable() {
public void run() {
tv.setText("Start!");
}
});
HttpResponse response = httpclient.execute(request);
// меняем TextView через Handler
h.post(new Runnable() {
public void run() {
tv.setText("Done!");
}
});
} catch (URISyntaxException e) {
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
}
};
}Вот тут не подскажу, ибо с c# не знаком вообще. Возможно, кто-нить другой ответит.ilgiz_vafin писал(а):А нет возможности сделать callback метод по аналогии с c#?
Хороший вопрос. Думаю, да. Так делается в учебниках. И насколько я знаю, Java-thread завершается, когда выполняет свой run.ilgiz_vafin писал(а):В любом случае спасибо. А вообще это хорошая практика вот так на каждый запрос создавать новый поток?
Добрый день.damager82 писал(а):Хороший вопрос. Думаю, да. Так делается в учебниках. И насколько я знаю, Java-thread завершается, когда выполняет свой run.ilgiz_vafin писал(а):В любом случае спасибо. А вообще это хорошая практика вот так на каждый запрос создавать новый поток?
Тут надо архитектуру Java очень хорошо знать, чтобы точно ответить.
Код: Выделить всё
public abstract T execute (HttpUriRequest request, ResponseHandler<? extends T> responseHandler)добавлю, что отслеживать это можно в Eclipse на Perspective Debug, вкладка Debug, там все потоки отображаются.damager82 писал(а): И насколько я знаю, Java-thread завершается, когда выполняет свой run.