我正在尝试使用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);
}
}
答案 0 :(得分:0)
你有跟踪你的代码??
写点像......
Log.d(“Trace”,“Point X”):
在doInBackground方法之前返回true,另一个在onPostExecute方法之前就在if和if之内。
看看你的Logcat并回来......
希望它有所帮助。
答案 1 :(得分:0)
您正在UI线程上执行您的方法,因为onPostExecute()
在UI线程上运行,而您的方法已经执行网络..
您应该将方法移至doInBackground()
方法