2015-10-15 49 views
-1

我有一個頁面,用戶輸入手機號碼來檢查它是否存在於數據庫中。我注意到的是,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) { 
+0

重新獲得第一次正確的結果....? –

+0

是的。但事情是我需要再次運行,因爲我試圖驗證在同一頁上的手機號碼 –

+0

好吧,我正在工作......!一秒 –

回答

0

可能是其在時間上的單一的AsyncTask運行的問題...! 請了一個可能的檢查,

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    task.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); 
} else { 
    task.execute(); 
} 

this鏈接採納...!

+0

所以這將啓用多線程? –

+0

是的....!它應該是 –