2014-02-23 109 views
1

我试图在我的游戏中实现排行榜。 我写了这个代码:GoogleApiClient.isConnected()返回始终为假

GoogleApiClient mGoogleApiClient; 
mGoogleApiClient = new GoogleApiClient.Builder(this) 
    .addApi(Drive.API) 
    .addScope(Drive.SCOPE_FILE) 
    .build(); 

mGoogleApiClient.connect(); 
//.... 

while(!mGoogleApiClient.isConnected())Log.d("","NO CONNECTED"); 
Games.Leaderboards.submitScore(mGoogleApiClient, "MY_LEADERBOARD_ID",newscore); 

为什么mGoogleApiClient.isConnected()回报总是假的?

EDIT1:好了,现在它的工作原理(我已经改变Drive.APIGames.APIDrive.SCOPE_FILEGames.SCOPE_GAME),但是当我打电话submitScore()即使这一切都在日志确定,排行榜仍然是空的。我如何检查submitScore()是否真的有效?

EDIT2:我用

startActivityForResult(Games.Leaderboards.getLeaderboardIntent(mGoogleApiClient, "MY_LEADERBOARD_ID"), REQ_LEADERBOARD); 

和一切正常!

回答

-1

我发现由于某些原因,虽然.connect()是异步的,这将是合乎逻辑的等待while循环随即,它需要显然是一些什么原因仍然需要在主UI线程上执行一些操作,因此为什么你的isConnected()总是返回false,因为while循环基本上阻塞了.connect()。如果我可以猜测为什么我会假设调用.connect()执行一段代码,它将自己置于主UI线程队列中,稍后再执行,并且通过在那里进行while循环,您将永远阻止从执行/连接的那段代码。

+0

觉得有趣的是,人们如何否定正确的回答,因为他们的父母没有给他们足够的关注,长大。现实检查。我是对的,你错了,孩子。 –