【问题标题】:Java RuntimeException doInBackground() Android Application Error with JsoupJava RuntimeException doInBackground() 使用 Jsoup 的 Android 应用程序错误
【发布时间】:2016-01-26 16:33:16
【问题描述】:

我目前无法在我的物理设备 (S6) 上重新创建此错误。事情对我来说很好,我所做的改变似乎并没有解决这个问题。我有以下错误:

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:818)
Caused by: java.lang.ExceptionInInitializerError
    at a.a.b.m.a(Unknown Source)
    at a.a.b.p.<clinit>(Unknown Source)
    at a.a.b.g.<init>(Unknown Source)
    at a.a.b.f.<init>(Unknown Source)
    at a.a.c.di.b(Unknown Source)
    at a.a.c.di.a(Unknown Source)
    at a.a.c.b.a(Unknown Source)
    at a.a.c.ae.a(Unknown Source)
    at a.a.a.a.a(Unknown Source)
    at a.a.a.f.e(Unknown Source)
    at a.a.a.b.a(Unknown Source)
    at com.airborne.grgr4.f.a(Unknown Source)
    at com.airborne.grgr4.f.doInBackground(Unknown Source)
    at android.os.AsyncTask$2.call(AsyncTask.java:288)
    at java.util.concurrent.FutureTask.run(FutureTask.java:237)
    ... 4 more
Caused by: java.lang.NullPointerException: in == null
    at java.util.Properties.load(Properties.java:246)
    at a.a.b.m.d(Unknown Source)
    at a.a.b.m.<clinit>(Unknown Source)

我知道在尝试从后台线程或其他线程滥用更新 UI 时,这是一个很常见的错误。让我感到困惑的是我无法在我的 Galaxy S6 上重新创建此错误,因此我无法正确修复它。这是我的异步代码:

new selectRepsBasedOnZipCode().execute(zipCode);

^^调用方法。

    private class selectRepsBasedOnZipCode extends AsyncTask<String, Void, ArrayList<String>> {

    protected ArrayList<String> doInBackground(String... params) {
        ArrayList<String> UserRepsBasedOnZip = new ArrayList<String>();

        String firstPartOfURL = "https://www.opencongress.org/search/result?q=";
        String lastPartOfURL = "&search_people=1";
        String urlToParse = firstPartOfURL + params[0] + lastPartOfURL;

        try {
            Document doc = Jsoup.connect(urlToParse).get();
            Elements content = doc.getElementsByClass("name");

            for (Element name : content) {
                UserRepsBasedOnZip.add(name.childNode(0).toString().trim());
            }
        } catch (Exception ex) {
            return UserRepsBasedOnZip;
        }
        return UserRepsBasedOnZip;
    }

    @Override
    protected void onPostExecute(ArrayList<String> UserRepsBasedOnZip) {
        finishBuildingLocalRepPage(UserRepsBasedOnZip);
    }
}

我正在使用 JSoup 来完成其中的一些工作。正如我所说,我无法重新创建问题(程序是从我设备上的 Android Studio 编译的最新版本),但我知道其他有应用程序报告此崩溃的人。
这是我在这个阶段的事件中唯一的异步方法,所以这让我相信这一定是崩溃发生的地方。任何有关修复以及如何验证修复的反馈或建议都会非常棒,谢谢。
+如果您能解释为什么这在我的设备 (S6) 上可以完美运行,但在所有其他设备 (L-01F、Galaxy Tab A 8.0、Galaxy S4、HTC One) 上却失败了,则额外奖励。

【问题讨论】:

    标签: java android exception android-asynctask jsoup


    【解决方案1】:

    问题在于 ProGard,当您使用 jsoup 代码时。只需检查这个答案:https://stackoverflow.com/a/15199658/4848308

    也检查这个问题jsoup code works in Java but not in Android- Nullpointerexception

    希望对你有帮助!!!

    【讨论】:

    • g2o,这似乎是该问题的可能候选者。我会在测试时更新,谢谢。
    • 完美答案g2o!我通过从 Android Studio 在我的手机上部署发布版本确认,它崩溃了......然后将 -keep for jsoup 添加到 proguard 文件中,就像一个魅力!附加参考:stackoverflow.com/questions/14343448/…
    【解决方案2】:

    我建议您应该使用 Log.e() 或 Log.i() 来跟踪错误。你会得到它以供参考,你可以参考我的博客AsyncTask

    【讨论】:

    • 它是一个已部署的应用程序,据我所知,已部署的应用程序不应在其中包含这样的日志记录。堆栈跟踪是来自 Android 控制台的崩溃报告,因此像这样的本地日志记录无济于事。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    • 1970-01-01
    • 2012-09-01
    • 1970-01-01
    相关资源
    最近更新 更多