Android 关于取消注册GCM的建议
我有一个使用android帐户的登录/注销应用程序。我也在使用GCM,所以当用户登录时,我会注册设备,如果用户注销,我会注销设备。我面临注销电话的问题 要从服务器注销我的设备,我需要帐户的令牌。由于我无法从gcminentservice将其传递给onUnregistered方法(或者至少我不知道如何传递),我尝试使用AccountManager获取它,但此时我的帐户已被删除。我想解决这个问题,我想到了两个选择: 1-在gcminentservice->onUnregistered函数中调用第一个gcmregistar.unregister并删除该帐户。这个解决方案的问题是,用户必须等待注销完成,但可能没有。我不能让用户不删除帐户就继续 2-将令牌保存在某个地方(可能是应用程序类),以便能够从gcminentservice->onUnregistered获取它Android 关于取消注册GCM的建议,android,google-cloud-messaging,Android,Google Cloud Messaging,我有一个使用android帐户的登录/注销应用程序。我也在使用GCM,所以当用户登录时,我会注册设备,如果用户注销,我会注销设备。我面临注销电话的问题 要从服务器注销我的设备,我需要帐户的令牌。由于我无法从gcminentservice将其传递给onUnregistered方法(或者至少我不知道如何传递),我尝试使用AccountManager获取它,但此时我的帐户已被删除。我想解决这个问题,我想到了两个选择: 1-在gcminentservice->onUnregistered函数中调用第一个
我认为2号更好,但我不知道这是否是最好的选择。有没有更好的方法解决这个问题?您可能应该在主要活动中使用onDestroy。这样,当用户关闭应用程序时,您肯定会调用此方法。我不知道您是如何从服务器上删除设备的(带有url?)
onDestroy方法保证在用户关闭应用程序时执行您的代码。一旦您在IntentService中获得令牌,您可以使用SharedReferences保存它:
public void savePrefrences(String key, String value)
{
SharedPreferences prefs = SynergyApplication._context.getSharedPreferences(SynergyApplication._context.getApplicationContext().getPackageName(), 0);
prefs.edit().putString(key, value).commit();
}
然后从应用程序中的任何地方阅读:
public String getPrefrences(String key)
{
SharedPreferences prefs = SynergyApplication._context.getSharedPreferences(SynergyApplication._context.getApplicationContext().getPackageName(), 0);
return prefs.getString(key, "");
}
看来我使用数字2是对的,谢谢你建议我使用SharedReferences,我会这样做。