2015-10-15 78 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

是的....!它应该是 –

相关问题