submitScoreGPGS不适用于AsyncTask

时间:2014-08-04 14:25:56

标签: android google-play-services

我正在尝试使用AsyncTaks让Google Play Services正常工作:

1 - 只有当用户点击调用下面方法loginGPRS()的排行榜按钮时,才会显示登录对话框;
2 - 然后执行一个ansync任务,调用onPreExecute上的startLoginGRPS()方法
3 - [这是问题]一旦他登录,我想在submitScoreGPRS()方法中调用方法getLeaderBoardGPRS()onPostExecute,但是排行榜对话框永远不会打开... < / p>

以下是相关的源代码:

@Override
public void loginGPGS() {
    try {
            MyAsyncTask asyncTask_a = new MyAsyncTask();
            asyncTask_a.execute();
    } catch (final Exception ex) {
    }

}

    class MyAsyncTask extends AsyncTask<Void, Void, Boolean> {
    String errorMsg;

    @Override
    protected void onPreExecute() {
        startLoginGPGS();
        super.onPreExecute();
    }

    @Override
    protected Boolean doInBackground(Void... v) {

            return true;
    }

    @Override
    protected void onPostExecute(Boolean success) {
        if(success){
            submitScoreGPGS(bestScore);
            getLeaderboardGPGS();
        }
    }
}



public void startLoginGPGS() {
    try {
    //  runOnUiThread(new Runnable() {
    //      public void run() {
                gameHelper.beginUserInitiatedSignIn();
    //      }
    //  });
    } catch (final Exception ex) {
    }

}   

@Override
public void submitScoreGPGS(int score) {
    if(getSignedInGPGS()){
        Games.Leaderboards.submitScore(gameHelper.getApiClient(),
                getString(R.string.leaderboard1_id), score);
    }
}

2 个答案:

答案 0 :(得分:0)

你有跟踪你的代码??

写点像......

Log.d(“Trace”,“Point X”):

在doInBackground方法之前返回true,另一个在onPostExecute方法之前就在if和if之内。

看看你的Logcat并回来......

希望它有所帮助。

答案 1 :(得分:0)

您正在UI线程上执行您的方法,因为onPostExecute()在UI线程上运行,而您的方法已经执行网络..

您应该将方法移至doInBackground()方法