zh-wang / YWeatherGetter4a

An Yahoo Weather API wrapper for android
99 stars 45 forks source link

another random bug #14

Closed raicas closed 10 years ago

raicas commented 10 years ago

E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1 Process: com.BlackSnowStudio.valkyrie, PID: 29314 java.lang.RuntimeException: An error occured while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:300) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355) at java.util.concurrent.FutureTask.setException(FutureTask.java:222) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587) at java.lang.Thread.run(Thread.java:841) Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() at android.os.Handler.(Handler.java:200) at android.os.Handler.(Handler.java:114) at android.widget.Toast$TN.(Toast.java:327) at android.widget.Toast.(Toast.java:92) at android.widget.Toast.makeText(Toast.java:241) at zh.wang.android.apis.yweathergetter4a.YahooWeatherLog.shortToast(YahooWeatherLog.java:27) at zh.wang.android.apis.yweathergetter4a.WOEIDUtils.fetchWOEIDxmlString(WOEIDUtils.java:174) at zh.wang.android.apis.yweathergetter4a.WOEIDUtils.queryWOEIDfromYahooAPIs(WOEIDUtils.java:126) at zh.wang.android.apis.yweathergetter4a.WOEIDUtils.getWOEID(WOEIDUtils.java:90) at zh.wang.android.apis.yweathergetter4a.YahooWeather$WeatherQueryByLatLonTask.doInBackground(YahooWeather.java:416) at zh.wang.android.apis.yweathergetter4a.YahooWeather$WeatherQueryByLatLonTask.doInBackground(YahooWeather.java:406) at android.os.AsyncTask$2.call(AsyncTask.java:288) at java.util.concurrent.FutureTask.run(FutureTask.java:237)             at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)             at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)             at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)             at java.lang.Thread.run(Thread.java:841)

zh-wang commented 10 years ago

Well, it's my mistake. It shows a toast when facing error in parsing xml. But it is still on background thread! Maybe you want to handle exception by yourself, instead of showing such toast :)

I'll add listeners to handle them, both on background thread and on UI thread. Thank you for your feedback.

zh-wang commented 10 years ago

Done.