gpt4 book ai didi

java - 如果获取数据的结果为空,如何停止AsyncTask?

转载 作者:行者123 更新时间:2023-12-01 04:17:45 25 4
gpt4 key购买 nike

如果我的结果字符串为空,我想取消 asyncTask。 (我在登录 Activity 中从用户那里获取用户名和密码,如果数据库中不存在该用户名和密码,则 asyncTask 必须取消并准备好启动相同的任务。)我阅读并应用了一些内容,但他们没有别跑。这是我的 AsyncTask :

class ProductConnect extends AsyncTask<Boolean, String, String> {

public AsyncResponse delegate=null;

private Activity activity;


public void MyAsyncTask(Activity activity) {
this.activity = activity;
}


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

String result = null;

StringBuilder sb = new StringBuilder();

try {

// http post
HttpClient httpclient = new DefaultHttpClient();

HttpGet httppost = new HttpGet( "http://191.165.2.235/getProducts.php?login=1&user_name="+UserName+"&user_pass="+Password);



HttpResponse response = httpclient.execute(httppost);

if (response.getStatusLine().getStatusCode() != 200) {
Log.d("MyApp", "Server encountered an error");
}

BufferedReader reader = new BufferedReader(
new InputStreamReader(
response.getEntity().getContent(), "UTF8"));



sb = new StringBuilder();

sb.append(reader.readLine() + "\n");

if(reader.readLine() == null){

asyncTask.cancel(true);
}

String line = null;

while ((line = reader.readLine()) != null) {

sb.append(line + "\n");

if (isCancelled()) break;
}


result = sb.toString();

Log.d("test", result);

}
catch (Exception e) {

Log.e("log_tag", "Error converting result " + e.toString());

}

return result;
}




@Override
protected void onPostExecute(String result) {

Intent passValue=new Intent(MainActivity.this, second.class);



try {

JSONArray jArray = new JSONArray(result);
JSONObject json_data;
for (int i = 0; i < jArray.length(); i++) {
json_data = jArray.getJSONObject(i);

t = json_data.getString("name");
names.add(t);

latitude=json_data.getString("lat");
lats.add(latitude);

longtitude=json_data.getString("lon");
longts.add(longtitude);

}


passValue.putStringArrayListExtra("latitudes", (ArrayList<String>) lats);

passValue.putStringArrayListExtra("veri", (ArrayList<String>) names);

passValue.putStringArrayListExtra("longtitudes", (ArrayList<String>) longts);

startActivity(passValue);

} catch (JSONException e1) {
e1.printStackTrace();
} catch (ParseException e1) {
e1.printStackTrace();
}
super.onPostExecute(result);
}

protected void onPreExecute() {
super.onPreExecute();
ProgressDialog pd = new ProgressDialog(MainActivity.this);
pd.setTitle("Lütfen Bekleyiniz");
pd.setMessage("Authenticating..");
pd.show();

}
}

我应该如何遵循一条路?我应该使用哪些方法?

最佳答案

这里缺少逻辑,如果数据不为空,则应该只调用异步任务。像这样

b.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

EditText username=(EditText)findViewById(R.id.editText2);

String UserName=username.getText().toString().trim();

EditText password=(EditText)findViewById(R.id.editText1);
String Password=password.getText().toString().trim();

if (UserName.length()>0&& Password.length()>0) {
asyncTask.execute(true); }
}
});

关于java - 如果获取数据的结果为空,如何停止AsyncTask?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19267260/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com