我正在尝试使用.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;
}
}
如果你能抓住我的错误,那就太好了。谢谢!
答案 0 :(得分:1)
来自AsyncTask documentation(线程规则部分):
该任务只能执行一次(如果尝试第二次执行则会抛出异常。)
答案 1 :(得分:0)
我的猜测是,创建的异步任务只运行一次,这意味着你需要创建一个新的类实例。