Как использовать Asyntask в Android Я хочу использовать его для фонового процесса, как вызов Webservice.Как использовать AsynTask в Android?
Пожалуйста, у кого-нибудь есть идея, чем, пожалуйста, скажите мне.
Спасибо заранее.
Как использовать Asyntask в Android Я хочу использовать его для фонового процесса, как вызов Webservice.Как использовать AsynTask в Android?
Пожалуйста, у кого-нибудь есть идея, чем, пожалуйста, скажите мне.
Спасибо заранее.
Use This
=======
private class SetDataOfWebService extends AsyncTask<Void, Void, Boolean> {
// ProgressDialog pDialog;
boolean success = false;
ConnectivityManager connectivity;
@Override
protected void onPreExecute() {
// pDialog = new ProgressDialog(MailSettings.this);
// pDialog.setMessage("Please Wait..");
// pDialog.show();
}
@Override
protected Boolean doInBackground(Void... params) {
if (isNetworkAvailable()) {
success = true;
//Call WebService
} else {
success = false;
}
return success;
}
@Override
protected void onPostExecute(Boolean result) {
// if (pDialog != null && pDialog.isShowing())
// pDialog.dismiss();
if (result) {
//Write Code For PostExcutive
} else {
return;
}
}
public boolean isNetworkAvailable() {
connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity != null) {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
Log.i("Class", info[i].getState().toString());
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
}
Написание AsyncTask так и не забывайте, что всегда делают задачу, которая относится к UI в onPreExecute() и onPostExecute() method.The задача, которая является вебсервис вызов или операции БД или независимо от того, что вы хотите выполнить в differen thread, должен быть в doInBackground().
class CallWebservice extends AsyncTask<Double, Void, Boolean> {
ProgressDialog progressDialog;
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
progressDialog = ProgressDialog.show(StudentListActivity.this,
"Calling Webservice", "Please wait...", true);
}
@Override
protected Boolean doInBackground(Double... params) {
// TODO Auto-generated method stub
String response = null;
response = Utillity
.getData(WEBSERVICE_URL);
return null;
}
@Override
protected void onPostExecute(Boolean flag) {
// TODO Auto-generated method stub
super.onPostExecute(flag);
progressDialog.dismiss();
}
}
И создать вспомогательный класс, который, имеющий метод для протокола HTTPS, как это: -
Class Utility{
public static String getData(String url) {
// Create a new HttpClient and Post Header
HttpParams myParams = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(myParams, 10000);
HttpConnectionParams.setSoTimeout(myParams, 10000);
HttpClient httpclient = new DefaultHttpClient();
String temp = "";
try {
HttpGet httpGet = new HttpGet(url.toLowerCase().replace(' ', '+'));
HttpResponse response = httpclient.execute(httpGet);
temp = EntityUtils.toString(response.getEntity());
Log.i("tag", temp);
} catch (ClientProtocolException e) {
} catch (IOException e) {
}
return temp;
}
}
И для получения дополнительной информации о AsyncTask пожалуйста, посетите официальный сайт http://developer.android.com/reference/android/os/AsyncTask.html
Здесь хороший tutorial.
Короче говоря, в некоторых случаях может продлить AsyncTask:
private class DownloadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
String response = "";
for (String url : urls) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(url);
try {
HttpResponse execute = client.execute(httpGet);
InputStream content = execute.getEntity().getContent();
BufferedReader buffer = new BufferedReader(new InputStreamReader(content));
String s = "";
while ((s = buffer.readLine()) != null) {
response += s;
}
} catch (Exception e) {
e.printStackTrace();
}
}
return response;
}
@Override
protected void onPostExecute(String result) {
textView.setText(result);
}
}
<String, Void, String>
в AsyncTask
являются:
doInBackground
.В doInBackground
вы должны выполнить свои «тяжелые» вычисления. onPostExecute
исполняется на финише doInBackground
.
Чтобы выполнить ваш AsyncTask
просто позвоните execute(url1, url2, ...)
возможно дубликат [Как пользоваться AsyncTask правильно? - Android] (http://stackoverflow.com/questions/14250989/how-to-use-asynctask-correctly- андроид) – Avijit