我有一个页面,用户输入手机号码以检查它是否存在于数据库中。我注意到的是,asynctask只会在第一次成功运行并将结果存储在某处,所以当我输入下一次不在数据库中的有效手机号码时,它仍会告诉我手机号码无效!
我知道asynctask默认是由单个线程运行的。解决这个问题的任何解决方案?
这是我的代码:
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.searchfor:
hp = handphone.getText().toString();
new AttemptLogin().execute(hp);
break;
default:
break;
class AttemptLogin extends AsyncTask<String, String, JSONObject> {
protected JSONObject doInBackground(String... args) {
try {
HashMap<String, String> params = new HashMap<>();
params.put("hp", args[0]);
Log.d("request", "starting");
JSONObject json = jsonParser.makeHttpRequest(
FIND_FRIENDS, "POST", params);
if (json != null) {
Log.d("JSON result", json.toString());
return json;
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
protected void onPostExecute(JSONObject json) {
答案 0 :(得分:0)
可能是一次运行一个Asynctask的问题......! 请做一个可能的检查,
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
task.execute();
}
通过this链接......!