我有一个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
看起来好像发生了一些异常,并且在异常块中,您的log.e与NullPointerException异常崩溃。什么是行71.另外,添加断点,并尝试调试doInBackground() – prijupaul
谢谢大家,我要测试它,但它是正常的“异常e”返回null?我从来没有见过 –