Я пытаюсь сделать почтовый запрос Http из службы, а не из действия. Эта служба уже настроена на непрерывный вызов через 5 секунд с помощью timertask.
В этой службе я отправляю http-запрос, который выдает ошибку android.os.NetworkOnMainThreadException
, я знаю, почему эта ошибка возникает, когда я отправляю http-запрос из своего основного потока, что противоречит правилам Android.
Кроме того, я знаю, что могу использовать класс AsyncTask, но проблема в том, что класс AsyncTask должен иметь поток пользовательского интерфейса, которого у меня нет, поскольку я нахожусь в обслуживании.
Может быть еще одно ограничение, которое у меня есть, это то, что родительский класс использует вызов этого класса каждые 5 секунд, поэтому, возможно, какая-то проблема с потоком. Точно сказать не могу.
Итак, может ли кто-нибудь предложить мне какую-нибудь идею для выполнения этой задачи, я не уверен, могу ли я использовать для нее обработчики, если да, пожалуйста, дайте мне простой пример, так как я немного оторван от Android.
Если вам нужен мой фрагмент кода, дайте мне знать, но это очень просто, просто HTTP-запрос json с использованием httpclient.
public abstract class Data extends TimerTask {
protected void request(JSONObject content) {
Log.i(TAG, content.toString());
try {
HttpClient client = new DefaultHttpClient();
HttpPost httpost = new HttpPost("https://test.test.test/data.json");
StringEntity se = new StringEntity(measurement.toString());
httpost.setEntity(se);
httpost.setHeader("Accept", "application/json");
httpost.setHeader("Content-type", "application/json");
ResponseHandler responseHandler = new BasicResponseHandler();
client.execute(httpost, responseHandler);
}catch(IOException exception){
exception.printStackTrace();
}
}
}
IntentService
не работает, как насчет обычного сервиса или дажеAsyncTask
? Есть ли какая-то конкретная причина, по которой они не будут работать? 12.02.2014