У меня есть приложение, которое отправляет HTTP-запрос каждые 0,5 секунды с помощью таймера. У меня это есть в asyncTask, и я читаю данные из вывода после того, как это делается из onPostExecute. Через некоторое время мое приложение начинает отставать, а пользовательский интерфейс замедляется. Знаете ли вы, почему это происходит и как это сделать правильно?
public class Komunikace extends AsyncTask<String, Void, String> {
public static KomunikaceInterface delegate=null;
//ProgressDialog progress;
String response = "";
String url = "";
DefaultHttpClient client;
HttpGet httpGet;
HttpResponse execute;
InputStream content;
BufferedReader buffer;
String s = "";
protected String doInBackground(String... params)
{
url = params[0];
client = new DefaultHttpClient();
httpGet = new HttpGet(url);
try {
execute = client.execute(httpGet);
content = execute.getEntity().getContent();
buffer = new BufferedReader(new InputStreamReader(content));
while ((s = buffer.readLine()) != null) {
response += s + "\n";
}
} catch (Exception e) {
e.printStackTrace();
}
client.getConnectionManager().shutdown();
return response;
}
protected void onPreExecute()
{
super.onPreExecute();
}
protected void onPostExecute(String result)
{
delegate.processFinish(result); // prijata tabulka
}
}
Это мой класс asyncTask. Тогда я называю это так:
tajmr = new Timer();
tajmr.schedule(new TimerTask() {
@Override
public void run() {
CallWebService();
}
}, 0, 100);
И затем это для вызова:
private void CallWebService()
{
this.runOnUiThread(fetchData);
}
private Runnable fetchData = new Runnable() {
public void run() {
try
{
updateURL =url;
Komunikace komunikace= new Komunikace();
komunikace.execute(updateURL);
}
catch (Exception e)
{
}
}
};
Похоже, он где-то зацикливается и через некоторое время замедляется. Это время занимает, например, 1 минуту.