AsyncTask崩溃我的应用程序

时间:2013-09-25 23:44:17

标签: android android-asynctask

我遇到了AsyncTask的问题,当我使用这个功能时,90%的它崩溃了,我不知道为什么。我能做些什么呢? obs:忽略返回类型

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;
}

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; }

错误:

2 个答案:

答案 0 :(得分:1)

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

更改为

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

可能发生这种情况的原因是e.getMessage()不返回任何消息,而在Log.wtf方法中,您可以在方法中传递异常实例(可以为null)。

答案 1 :(得分:0)

它在行中失败

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

不是吗?

您的异常e对象没有消息,并在null上返回e.getMessage()

相关问题