我正在使用以下代码为GCM注册我的设备
private class GetGcmRegId extends AsyncTask<Void, Void, String> {
@Override
protected void onPreExecute() {
super.onPreExecute();
pdia = new ProgressDialog(LoginActivity.this);
pdia.setMessage("Please Wait...");
pdia.setCancelable(false);
pdia.setCanceledOnTouchOutside(false);
pdia.show();
}
@Override
protected String doInBackground(Void... params) {
GCMRegistrar.register(LoginActivity.this, Utility.SENDER_ID);
regid = GCMRegistrar.getRegistrationId(LoginActivity.this);
return regid;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
pdia.dismiss();
regid = result;
System.out.println("regid ==========>"+regid);
}
}
现在,我知道的一件事是我将通过广播获得注册ID。但是,我怎么能让这个asynctask等到广播收到呢?
目前,此代码System.out.println("regid ==========>"+regid);
什么都不打印,但是当我第二次运行活动时,我收到了注册ID;
答案 0 :(得分:0)
在我看来,你不必等待。请参阅我的以下示例代码。希望这有帮助!
首先,我检查SharedPreferences,如果为空,则从Google服务器获取令牌(设备注册ID)。令牌将存储在SharedPreferences中供其他用途/提供给服务器端应用程序。
$db = db::getInstance();
$db->func('SELECT `id` FROM `table` WHERE `name` = ?');
// prints out 'example: successful '