Android 如何重新执行异步任务?

Android 如何重新执行异步任务?,android,android-asynctask,Android,Android Asynctask,我有一个页面,用户在其中输入手机号码以检查数据库中是否存在该号码。我注意到,asynctask只会在第一次成功运行并将结果存储在某处,因此,当我下次输入一个不在数据库中的有效手机号码时,它仍然会告诉我手机号码无效 我知道asynctask默认由单线程运行。有什么解决办法吗 这是我的代码: @Override public void onClick(View view) { switch (view.getId()) { case R.id.searchfor:

我有一个页面,用户在其中输入手机号码以检查数据库中是否存在该号码。我注意到,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) {
@覆盖
公共void onClick(视图){
开关(view.getId()){
案例R.id.searchfor:
hp=handphone.getText().toString();
新建AttemptLogin().execute(hp);
打破
违约:
打破
类AttemptLogin扩展了AsyncTask{
受保护的JSONObject doInBackground(字符串…args){
试一试{
HashMap params=新的HashMap();
参数put(“hp”,参数[0]);
日志d(“请求”、“启动”);
JSONObject json=jsonParser.makeHttpRequest(
找到你的朋友,“发布”,参数);
if(json!=null){
Log.d(“JSON结果”,JSON.toString());
返回json;
}
}捕获(例外e){
e、 printStackTrace();
}
返回null;
}
受保护的void onPostExecute(JSONObject json){

可能是一次运行一个异步任务的问题。。。! 请做一个可能的检查

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

通过链接…!

您第一次得到正确的结果吗…?是的。但问题是,我需要重新运行,因为我正在尝试验证同一页上的手机号码。好的,我正在工作…!一秒钟请检查控制台,您是否收到任何警告,因为您知道默认情况下每个异步任务都在一个线程上