java – 为什么这个后台任务因致命异常而失败?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 为什么这个后台任务因致命异常而失败?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3381字,纯文字阅读大概需要5分钟。
内容图文
![java – 为什么这个后台任务因致命异常而失败?](/upload/InfoBanner/zyjiaocheng/745/b0d15d0f7c3740cbba4c1317442ec199.jpg)
我的MainActivity中的以下代码在重写的doInBackground()方法中失败并出现致命异常:
public class MainActivity extends ActionBarActivity {
. . .
public void onFetchBtnClicked(View v){
if(v.getId() == R.id.FetchBtn){
Toast.makeText(getApplicationContext(), "You mashed the button, dude.", Toast.LENGTH_SHORT).show();
new NetworkTask().execute();
}
}
public static class NetworkTask extends AsyncTask<String, Void, HttpResponse> {
@Override
protected HttpResponse doInBackground(String... params) {
String link = params[0];
HttpGet request = new HttpGet("http://localhost:28642/api/deliveries/Count");
AndroidHttpClient client = AndroidHttpClient.newInstance("Android");
try {
return client.execute(request);
} catch (IOException e) {
e.printStackTrace();
return null;
} finally {
client.close();
}
}
@Override
protected void onPostExecute(HttpResponse result) {
FileOutputStream f = null;
//Do something with result
if (result != null)
/* result.getEntity().writeTo(new FileOutputStream(f)); */
try {
result.getEntity().writeTo(f);
} catch (IOException e) {
e.printStackTrace();
}
}
}
具有异常上下文的smidgin的特定异常消息如下:
03-31 18:04:26.350 1401-1401/hhs.app I/Choreographer﹕ Skipped 33 frames! The application may be doing too much work on its main thread.
03-31 18:05:00.030 1401-1420/hhs.app W/dalvikvm﹕ threadid=12: thread exiting with uncaught exception (group=0xb2a7aba8)
03-31 18:05:00.250 1401-1420/hhs.app E/AndroidRuntime﹕ FATAL EXCEPTION: AsyncTask #1
Process: hhs.app, PID: 1401
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.ArrayIndexOutOfBoundsException: length=0; index=0
at hhs.app.MainActivity$NetworkTask.doInBackground(MainActivity.java:68)
at hhs.app.MainActivity$NetworkTask.doInBackground(MainActivity.java:64)
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)
有什么问题 – 它在doInBackground()的git-go失败了.我的网址是由于打击造成的“坏”(在C#中,我会使用逐字字符串),还是……?
UPDATE
我删除了有问题的行,但它仍然失败,抛出IOException.
我实际上切换到了完全不同的代码,这里可以看到[为什么我得到,“不兼容的类型:对象无法转换为字符串”这个? (它正在抛出NetworkOnMainThreadException),但是当失败时我决定再给这个代码一个机会,但是输入了“catch(IOException e)”块.
有人知道为什么吗?
解决方法:
这个例外:
Caused by: java.lang.ArrayIndexOutOfBoundsException: length=0; index=0
告诉您正在访问索引0处的空数组,在此行中:
protected HttpResponse doInBackground(String... params) {
String link = params[0];
注意,在任务之后你不要在任何地方使用链接变量(也不是params).
内容总结
以上是互联网集市为您收集整理的java – 为什么这个后台任务因致命异常而失败?全部内容,希望文章能够帮你解决java – 为什么这个后台任务因致命异常而失败?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。