Luv*_*ous 3 multithreading android android-asynctask
我在这里搜索了许多类似的问题和答案,但我仍然无法理解为什么我的代码会抛出这个错误.
12-27 12:57:57.908: W/dalvikvm(465): Exception Ljava/lang/RuntimeException; thrown while initializing Landroid/os/AsyncTask;
12-27 12:57:57.908: W/dalvikvm(465): threadid=9: thread exiting with uncaught exception (group=0x40014760)
12-27 12:57:57.927: E/AndroidRuntime(465): FATAL EXCEPTION: Thread-10
12-27 12:57:57.927: E/AndroidRuntime(465): java.lang.ExceptionInInitializerError
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.baseballnews.NewsParser.fetchNews(NewsParser.java:137)
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.baseballnews.MLBNews.getLeagueNews(MLBNews.java:145)
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.baseballnewsreader.BaseballNewsReader.licenseCheckCompleted(BaseballNewsReader.java:45)
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.lm.LicenseMgr.respondFromCache(LicenseMgr.java:218)
12-27 12:57:57.927: E/AndroidRuntime(465): at com.verious.lm.LicenseMgr.run(LicenseMgr.java:139)
12-27 12:57:57.927: E/AndroidRuntime(465): at java.lang.Thread.run(Thread.java:1020)
12-27 12:57:57.927: E/AndroidRuntime(465): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
12-27 12:57:57.927: E/AndroidRuntime(465): at android.os.Handler.<init>(Handler.java:121)
12-27 12:57:57.927: E/AndroidRuntime(465): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:595)
12-27 12:57:57.927: E/AndroidRuntime(465): at android.os.AsyncTask$InternalHandler.<init>(AsyncTask.java:595)
12-27 12:57:57.927: E/AndroidRuntime(465): at android.os.AsyncTask.<clinit>(AsyncTask.java:184)
12-27 12:57:57.927: E/AndroidRuntime(465): ... 6 more
Run Code Online (Sandbox Code Playgroud)
我在这里有两个谜题:
我试图从使用AsyncTask的Web服务获取一些新闻项并在视图上显示它们.这是我的基本代码:
public class News {
...
new FetchXML().execute(url);
...
private class FetchXML extends AsyncTask<String,String,String> {
protected String doInBackground(final String... urls) {
String urlToOpen = urls[0];
URL url;
String inputLine = null;
String response = "";
URLConnection connection;
try {
String authStringEnc = b64encode("user:pass".getBytes());
url = new URL(urlToOpen);
connection = url.openConnection();
connection.setRequestProperty("Authorization", "Basic " + authStringEnc);
BufferedReader in = new BufferedReader(
new InputStreamReader(
connection.getInputStream()));
while ((inputLine = in.readLine()) != null) {
response += inputLine;
}
in.close();
} catch(MalformedURLException e) {
//
} catch(IOException e) {
//
}
return response;
}
protected void onPostExecute(String result) {
super.onPostExecute(result);
NewsParser.this.parse(result);
}
}
Run Code Online (Sandbox Code Playgroud)
NewsParser parse()方法解析xml并更新视图.
我在这里完全失败了.任何帮助将不胜感激!
谢谢!
| 归档时间: |
|
| 查看次数: |
3928 次 |
| 最近记录: |