我有一個頁面,用戶輸入手機號碼來檢查它是否存在於數據庫中。我注意到的是,asynctask只能在第一次成功運行並將結果存儲在某個地方,所以當我輸入下一次不在數據庫中的有效手機號時,它仍會告訴我手機號碼無效!如何重新執行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) {
重新獲得第一次正確的結果....? –
是的。但事情是我需要再次運行,因爲我試圖驗證在同一頁上的手機號碼 –
好吧,我正在工作......!一秒 –