2015-01-05 3 views
0

в моем приложении Я пытаюсь извлечь данные из webservice с помощью AsyncTask. В этом коде я поставил длительную работу в AsyncTask, но я получаю эту ошибку:Android Looper.prepare() в AsyncTask

FATAL EXCEPTION: Thread-10 
java.lang.ExceptionInInitializerError at 
icq.ms.Activities.ActivitySendArchive$4.run(ActivitySendArchive.java:298) 
01-05 10:52:30.905: E/AndroidRuntime(467): 
Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 

Мой код:

Thread request_thread = new Thread() { 
    @Override 
    public void run() { 
     new LongOperationList().execute (""); 
    } 
}; 
request_thread.start(); 

LongOperationList блок кода:

private class LongOperationList extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params) { 
     G.db.deleteArchive (G.config_username); 
     try { 
      getRequestFromServer (0, 10); 
     } catch (Exception e) { 
      if(G.DEBUG) G.DebugLog.log(e + ""); 
     } 
     return ""; 
    } 

    @Override 
    protected void onPostExecute(String result) { 
     progress_bar.setVisibility (View.GONE); 
    } 

    @Override 
    protected void onPreExecute() {} 

    @Override 
    protected void onProgressUpdate(Void... values) {} 
} 

как позвонить Looper. Подготовьте() в AsyncTask?

+1

Вы уже использовали AsyncTask для выполнения сетевой фоновой операции, поэтому зачем вам выполнять свою задачу async в другом потоке ??? – RockStar

+1

не вызывайте AsyncTask из потока – Anjali

+0

@RockStar Спасибо, сэр. моя проблема решена, –

ответ

0

Вы должны назвать AsyncTask как:

new LongOperationList().execute (""); 
0

не нужно, чтобы начать долгую операцию задачу из нити так просто

изменить это на

Thread request_thread = new Thread() { 
    @Override 
    public void run() { 
     new LongOperationList().execute (""); 
    } 
}; 
request_thread.start(); 

это

new LongOperationList().execute (""); 
Смежные вопросы