簡體   English   中英

Android AsyncTask崩潰

[英]Android AsyncTask crashing

嗨,我有AsyncTask的問題,即時通訊從網絡上解析了一些數據,但是當我想使用此類時,我的應用程序崩潰了:

10-31 12:29:29.941: E/AndroidRuntime(3741): FATAL EXCEPTION: AsyncTask #2
10-31 12:29:29.941: E/AndroidRuntime(3741): java.lang.RuntimeException: An error occured while executing doInBackground()
10-31 12:29:29.941: E/AndroidRuntime(3741):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:273)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.concurrent.FutureTask.setException(FutureTask.java:124)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:307)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.concurrent.FutureTask.run(FutureTask.java:137)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.lang.Thread.run(Thread.java:856)
10-31 12:29:29.941: E/AndroidRuntime(3741): Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.ArrayList.get(ArrayList.java:304)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at morisson.Notowaniagieldowe.MainActivity$Cena.doInBackground(MainActivity.java:169)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at morisson.Notowaniagieldowe.MainActivity$Cena.doInBackground(MainActivity.java:1)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
10-31 12:29:29.941: E/AndroidRuntime(3741):     at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
10-31 12:29:29.941: E/AndroidRuntime(3741):     ... 5 more

和代碼是:

public class Cena extends AsyncTask<Integer,Void,String>{
ProgressDialog dialog;

@Override
protected String doInBackground(Integer... params) {

    int a = params[0];
    try {

        Document doc = Jsoup.connect("http://www.money.pl/gielda/gpw/akcje/").get();

        Elements elements = doc.select("td.ar");

        System.out.println("test2:" + elements.get(a).text());
        return elements.get(a).text();


    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

return null;
}
}

我也使用AsyncTask的其他2類,但我沒有任何問題。 我嘗試打印“ test2”時會出現崩潰,當然,當我嘗試返回值時也會出現崩潰。 有什么建議么?

如果仔細檢查錯誤日志,您會發現這里的實際錯誤是ArrayIndexOutOfBound異常。 含義elements.get(a)int a = params[0]; 可能返回null。

由於尚未捕獲到異常(這導致了崩潰),因此我高度懷疑int a = params[0]; 成為問題的原因,因為它是try catch塊中沒有的唯一代碼。

try {
    Document doc = Joup.connect("http://www.money.pl/gielda/gpw/akcje/").get();
    Elements elements = doc.select("td.ar");
    if(elemetns!=null&&a!=null){
        System.out.println("test2:" + elements.get(a).text());
        return elements.get(a).text();
    }
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM