2013-09-25 118 views
0

我有一个AsyncTask的问题,当我使用这个函数时,90%的崩溃,我不知道为什么。我能做些什么呢? OBS:忽略返回类型AsyncTask崩溃我的应用程序

protected Boolean doInBackground(ArrayList<cldetailday>... params){ 
boolean HaveOpenHour = false; 
ArrayList<String> lstHours = new ArrayList<String>(); 
ArrayList<cldetailday> lstdetail = new ArrayList<cldetailday>(); 
Time _time = new Time(); 
_time.hour = 0; 
_time.minute = 0; 
try { 
     lstdetail = params[0]; 
     if(lstdetail != null & lstdetail.size() > 0){ 
      for(int i = 0; i < lstdetail.size(); i++){ 
       lstHours.add(lstdetail.get(i).getHora()); 
       if(((i+1)%2 == 0)){        
        // Fechei um lancamento 
        HaveOpenHour = true; 
        _time.hour += UtilsDate.Instance().TimeDiff(lstHours.get(i-1),lstHours.get(i)).getHour(); 
        _time.minute += UtilsDate.Instance().TimeDiff(lstHours.get(i-1),lstHours.get(i)).getMinute(); 
       } 
       else{ 
        HaveOpenHour = false; 
       } 
      } 
     } 
     // Temos horas em aberto, inserimos a hora atual para fechar esse lancamento 
     if(!HaveOpenHour){ 
      // temos alguem na lista para processar horas 
      if(lstHours != null && lstHours.size() > 0){ 
        clHour hour = UtilsDate.Instance().getCurrentHour(); 

       _time.hour += UtilsDate.Instance().TimeDiff(lstHours.get(lstHours.size() - 1), hour.getStringHour()).getHour(); 
       _time.minute += UtilsDate.Instance().TimeDiff(lstHours.get(lstHours.size() - 1), hour.getStringHour()).getMinute(); 
       _time.normalize(true); 

      } 
     }   
    return true;   
} catch (Exception e) { 
    // TODO: handle exception 
    Log.e("Error doBackground: ", e.getMessage()); 
    return false; 
} 

错误:

09-25 20:27:15.576: E/AndroidRuntime(566): FATAL EXCEPTION: AsyncTask #5 
09-25 20:27:15.576: E/AndroidRuntime(566): java.lang.RuntimeException: An error occured while executing doInBackground() 
09-25 20:27:15.576: E/AndroidRuntime(566): at android.os.AsyncTask$3.done(AsyncTask.java:200) 
09-25 20:27:15.576: E/AndroidRuntime(566): at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 
09-25 20:27:15.576: E/AndroidRuntime(566): at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 
09-25 20:27:15.576: E/AndroidRuntime(566): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 
09-25 20:27:15.576: E/AndroidRuntime(566): at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
09-25 20:27:15.576: E/AndroidRuntime(566): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
09-25 20:27:15.576: E/AndroidRuntime(566): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
09-25 20:27:15.576: E/AndroidRuntime(566): at java.lang.Thread.run(Thread.java:1019) 
09-25 20:27:15.576: E/AndroidRuntime(566): Caused by: java.lang.NullPointerException: println needs a message 
09-25 20:27:15.576: E/AndroidRuntime(566): at android.util.Log.println_native(Native Method) 
09-25 20:27:15.576: E/AndroidRuntime(566): at android.util.Log.e(Log.java:230) 
09-25 20:27:15.576: E/AndroidRuntime(566): at com.wpa.pontoeletronico.GetTotalHour.doInBackground(GetTotalHour.java:71) 
09-25 20:27:15.576: E/AndroidRuntime(566): at com.wpa.pontoeletronico.GetTotalHour.doInBackground(GetTotalHour.java:1) 
09-25 20:27:15.576: E/AndroidRuntime(566): at android.os.AsyncTask$2.call(AsyncTask.java:185) 
09-25 20:27:15.576: E/AndroidRuntime(566): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
09-25 20:27:15.576: E/AndroidRuntime(566): ... 4 more 
+0

看起来好像发生了一些异常,并且在异常块中,您的log.e与NullPointerException异常崩溃。什么是行71.另外,添加断点,并尝试调试doInBackground() – prijupaul

+0

谢谢大家,我要测试它,但它是正常的“异常e”返回null?我从来没有见过 –

回答

1
Log.e("Error doBackground: ", e.getMessage()); 

变化

Log.wtf("Your asyntask TAG","Error doBackground: ",e); 

一个可能的原因,为什么这可能发生的是,e.getMessage ()在Log中返回没有消息.wtf方法,您可以在第三个参数中的方法中传递您的异常实例(可以为null)。

+0

谢谢大家,我要去测试它,但它是正常的“异常e”返回null?我从来没有见过它 –

+0

没有。 e.getMessage返回null,而不是e。 – wtsang02

0

它未能在该行

Log.e("Error doBackground: ", e.getMessage()); 

是不是?

您的例外e对象没有信息并返回nulle.getMessage()

+0

谢谢大家,我要测试它,但它是正常的“异常e”返回null?我以前从未见过 –

+0

异常不为空。它只是没有消息要返回。 – Szymon