【发布时间】:2012-01-08 13:09:09
【问题描述】:
我决定在我的应用程序从客户经理检索 google 帐户的身份验证令牌时显示带有消息“授权”的对话框,然后我想更新对话框设置消息“保存联系人”,此时执行保存联系人的长时间操作,但是当我想在下面的代码中进行此操作时,我的身份验证对话框没有显示(黑屏需要 8 秒,然后对话框出现一秒钟并关闭)。我正在处理程序线程中创建和更新对话框,其中绑定到 UI 线程(在 onCreate 方法中创建处理程序)。当我创建对话框时,它看起来像 UI 线程被阻止。谢谢。 这是我的代码:
public void gotAccount(final GoogleAccountManager googleAccountManager,
final Account account)
{
SharedPreferences settings = getSharedPreferences(PREF, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("accountName", account.name);
editor.commit();
Log.i("gotAccount","start new thread");
new Thread(new Runnable()
{
public void run()
{
Log.i("gotAccount-Thread run()","start show loading message");
createLoadingMessage();
Log.i("gotAccount-Thread run()","complete show loading message");
Log.i("gotAccount-Thread run()","start getAuthToken");
googleAccountManager.manager
.getAuthToken(account, AUTH_TOKEN_TYPE, true, new AccountManagerCallback<Bundle>()
{
@Override
public void run(AccountManagerFuture<Bundle> future)
{
try
{
Log.i("gotAccount-run()","get auth token complete");
Log.i("callback-run()","start get result");
Bundle bundle = future.getResult();
if (bundle.containsKey(AccountManager.KEY_INTENT))
{
Intent intent = bundle
.getParcelable(AccountManager.KEY_INTENT);
int flags = intent.getFlags();
flags &= ~Intent.FLAG_ACTIVITY_NEW_TASK;
intent.setFlags(flags);
startActivityForResult(intent, REQUEST_AUTHENTICATE);
} else if (bundle.containsKey(AccountManager.KEY_AUTHTOKEN))
{
createSaveContactsMessage();
setAuthToken(bundle
.getString(AccountManager.KEY_AUTHTOKEN));
longOperation();
completeSave(getText(R.string.saved) + ": "
+ currentCount);
}
} catch (Exception e)
{
handleException(e);
}
}
},null);
}
}).start();
}
【问题讨论】:
标签: java android google-api