【问题标题】:Can't return value from method containing class which extends AsyncTask无法从包含扩展 AsyncTask 的类的方法返回值
【发布时间】:2016-03-26 17:50:02
【问题描述】:

我正在尝试从我的方法 checkInvited() 返回一个布尔值。此方法包含一个扩展 AsyncTask<Void,Void,String> 的类。这是完整的方法

public boolean checkInvited(String player_id){

    final String g_id = game_id;
    final String fr_id = player_id;

    class CheckInvited extends AsyncTask<Void, Void, String>{
        boolean invited;
        ProgressDialog loading;
        @Override
        protected void onPreExecute(){
            super.onPreExecute();
            loading = ProgressDialog.show(InviteFriends.this,"Checking Invite Status","Please Wait...",false,false);
        }

        @Override
        protected void onPostExecute(String s){
            super.onPostExecute(s);
            loading.dismiss();
            JSON_STRING = s;
            if (s.trim().equals("0")){
                invited = false;
            } else {
                invited = true;
            }

        }

        @Override
        protected String doInBackground(Void... params){

            HashMap<String, String> hashMap = new HashMap<>();
            hashMap.put(Config.KEY_INVITES_GAME_ID, g_id);
            hashMap.put(Config.KEY_INVITES_PLAYER_ID, fr_id);

            RequestHandler rh = new RequestHandler();
            String s = rh.sendPostRequest(Config.URL_CHECK_INVITED, hashMap);
            return s;
        }
    }
    CheckInvited ci = new CheckInvited();
    ci.execute();
    return ci.invited;
}

该方法调用sendPostRequest()的预定义方法,通过php联系mySql数据库。我的问题是让checkInvited() 方法返回真或假。目前,只有当我知道至少有一个结果应该为真时,它才会返回假。

提前感谢您的帮助。

【问题讨论】:

  • AsyncTask的定义是异步运行。您在 AsyncTask 完成(甚至可能开始)执行之前返回 false
  • 请不要在方法中定义类...

标签: java android android-studio


【解决方案1】:

它只返回 false,因为异步任务在单独的线程中运行,并且可能需要很长时间才能执行,具体取决于龋齿因素。您甚至在异步任务完成之前就返回了值。

我建议从 onPostexecute 调用一个需要 true 或 false 的方法,因为 onPostExecute 在 doInBackground 完成后运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多