HttpPost: InputDispatcher: «Канал необратимо поврежден и будет удален!» на Нексусе 7JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 HttpPost: InputDispatcher: «Канал необратимо поврежден и будет удален!» на Нексусе 7

Сообщение Anonymous »

На Nexus 7 (4.3), а не на моем старом устройстве LG Optimus 3d (Android 2.2),
когда я использую HttpPost, я получаю это

E/InputDispatcher﹕ канал '4273f7b0 ... MainActivity (server)' ~ Канал безвозвратно поврежден и будет удален!

Люди упоминали возможную утечку памяти. Видеть **. Однако эта проблема возникает сразу при запуске, когда я пытаюсь использовать HttpPost. Вероятность утечки памяти все еще существует?

Вот как я делаю HttpPost:

Код: Выделить всё

public void server_addUserGetId()
{
String url = GS.baseUrl() + "/users";
HttpPost theHttpPost = new HttpPost(url);

List nameValuePairs = new ArrayList();
nameValuePairs.add(new BasicNameValuePair("dId", s_UserInfo.getInstance().m_device_id ));
try {
theHttpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
HttpPostAsync theHttpPostAsync = new HttpPostAsync(new OnPostExecuteHandler() {
@Override
public void handlePostExecute(Object oHttpResponse) {
HttpResponse theHttpResponse = (HttpResponse) oHttpResponse;
JSONObject jo = GS.getJSONObject(theHttpResponse.getEntity());
try {
s_UserInfo.getInstance().m_user_id = jo.getString("_id");
} catch (JSONException e) {
e.printStackTrace();
}
}
});
theHttpPostAsync.execute(theHttpPost);
return;
}
Вот моя задача HttpPostAsync:

Код: Выделить всё

public class HttpPostAsync extends AsyncTask
{
private HttpPost m_HttpPost;
private HttpResponse m_HttpResponse;

private OnPostExecuteHandler m_OnPostExecuteHandler;
public HttpPostAsync(OnPostExecuteHandler listener)
{
m_OnPostExecuteHandler = listener;
}

protected HttpResponse doInBackground(HttpPost ... args)
{
m_HttpPost = args[0];
if(GS.dl>5) Log.d("GRA: HttpPostAsync", "doInBackground: Thread.currentThread().getId()=" + Thread.currentThread().getId());
m_HttpResponse = visit(m_HttpPost);
return m_HttpResponse;
}

protected void onProgressUpdate(Integer... progress) {
}

protected void onPostExecute(Long result) {
if(GS.dl>5) Log.d("GRA: HttpPostAsync", "onPostExecute: Thread.currentThread().getId()=" + Thread.currentThread().getId());
if(GS.dl>5) Log.d("GRA: HttpPostAsync", "onPostExecute: result=" + result);
//if(GS.dl>5) Log.d("GRA: HttpPostAsync", "onPostExecute: m_HttpEntity="+m_HttpEntity);
m_OnPostExecuteHandler.handlePostExecute(m_HttpResponse);
}

public HttpResponse visit(HttpPost theHttpPost)
{
HttpResponse response = null;
try {
// Create a new HttpClient and Post Header
HttpClient httpclient = new DefaultHttpClient();
// Execute HTTP Post Request
response = httpclient.execute(theHttpPost);
} catch (IOException e) {
e.printStackTrace();
Log.d("HttpPostAsync.java", "IOException e=" + e);
// TODO Auto-generated catch block
}
return response;
}
}
Есть идеи?

Я прочитал ответ SO*, возможно, это связано с инициализацией ArrayList, поэтому я также пробовал инициализировать таким образом, с 1, в ArrayList, но проблема не устранена:

Код: Выделить всё

List nameValuePairs = new ArrayList(1);
*: ТАКОЙ ответ, который не совсем подходит/не помогает:
Приложение перестало работать на Android

** связана с утечкой памяти? http://android-developers.blogspot.com/ ... droid.html

Подробнее здесь: https://stackoverflow.com/questions/227 ... e-disposed
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»