如何处理url.get()失败

时间:2014-07-16 21:00:28

标签: android android-asynctask jsoup

大家好日子。

我一直在开发一个应用程序,它可以从网站上的某些表格中删除数据并将其显示在屏幕上。一切都很好,但我想在没有数据连接的情况下提供冗余。例如,对话框或Toast只是简单地说“无数据连接”。

我如何以及在哪里放这个?下面是我的Asynctask,其中jsoup获取数据,所以我假设我可以在这里放一些东西?

如果没有与网站的数据连接,应用程序崩溃的那一刻。

    //AsyncTask
private class Fixtures extends AsyncTask<Void, Void, Void> {

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        mProgressDialog = new ProgressDialog(MainActivity.this);
        mProgressDialog.setTitle("Fixtures");
        mProgressDialog.setMessage("Loading...");
        mProgressDialog.setIndeterminate(false);
        mProgressDialog.show();
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            doc = Jsoup.connect(url).get();
            } catch (IOException e) {

            }

            tables = doc.select("table");

            tablesSize = tables.size();

            for (int t = 0; t < (tables.size() - 1); t++){
                table = tables.get(t);
                rows = table.select("tr");
                date = doc.select("h2").get(t);
            }
        return null;
    }

非常感谢任何帮助或对其他答案的指示。

1 个答案:

答案 0 :(得分:0)

如果您的任务嵌套在片段中,您可以将此方法放在外部类中,这应该可以。否则找到一种方法来传递应用程序上下文而不是使用getActivity。这应该是相对线程安全的。

private void buildFailedDialog(){

    AlertDialog.Builder dialogBuilder =  new AlertDialog.Builder(getActivity());

    dialogBuilder.setMessage("Could Not Connect to Site!");
    dialogBuilder.setTitle("Connection Failed");

    dialogBuilder.setNegativeButton("OK", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            dialog.cancel();
        }
    });
    final AlertDialog dialog = dialogBuilder.create();
    dialog.show();
}

最好只显示一个祝酒词,这样就不会破坏用户的活动

Toast.makeText(getActivity(), "Failed to Connect to Site" ,Toast.LENGTH_LONG).show();