AsyncTask使应用程序崩溃

时间:2014-01-13 21:06:27

标签: java android database android-asynctask

我正在尝试使用.php联系我的数据库 它在第一次运行ASYNC时工作正常,但是第二次运行它(不退出应用程序)应用程序崩溃(无法从LogCat捕获错误消息)

并且由于某种原因它根本不会进入while循环。我之前已经多次编写了这样的代码,虽然不是这次,但它的效果还不错。

代码:

class LOAD_USERS extends AsyncTask<String, Void, Void>
{
    //Internet Input
    URL url;
    InputStream iS;
    InputStreamReader iSR;
    BufferedReader r;

    //Variables
    List<String> Users = new ArrayList<String>();
    public String s = "";
    public String DOWNLOAD_SUCCESS = "fail";
    String charset = "iso-8859-1";

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        pDialog = new ProgressDialog(MenuActivity.this);
        pDialog.setMessage("Letar efter spelare");
        pDialog.setIndeterminate(false);
        pDialog.setCancelable(true);
        pDialog.show();
    }

    @Override
    protected Void doInBackground(String... sUrl) {
        try{
            url = new URL(sUrl[0]);
            iS = url.openStream();
            iSR = new InputStreamReader(iS, charset);
            r = new BufferedReader(iSR);

            Users.clear();

            while((s = r.readLine()) != null)
            {
                Users.add(s);
                DOWNLOAD_SUCCESS = "success";
            }
        }catch(Exception e)
        {
            Log.e(e.toString(),e.toString());
        }

        return null;
    }

    @Override
    protected void onPostExecute(Void result)
    {
        super.onPostExecute(result);
        pDialog.dismiss();
        if(DOWNLOAD_SUCCESS.equalsIgnoreCase("success"))
        {
            MenuActivity.this.CheckValidation();
        }
        else if(DOWNLOAD_SUCCESS.equalsIgnoreCase("fail"))
        {
            Toast.makeText(getBaseContext(), "Check Your Internet Connection",   Toast.LENGTH_SHORT).show();
        }

        DownloadComplete = true;
    }
}

如果你能抓住我的错误,那就太好了。谢谢!

2 个答案:

答案 0 :(得分:1)

来自AsyncTask documentation(线程规则部分):

  

该任务只能执行一次(如果尝试第二次执行则会抛出异常。)

答案 1 :(得分:0)

我的猜测是,创建的异步任务只运行一次,这意味着你需要创建一个新的类实例。