将googleapiclient obj从一个活动传递给另一个活动
-
21-12-2019 - |
题
我希望能够在除了创建googleapiclient obj(主要活动)之外的不同活动中更新我的排行榜的分数。
是什么最好的方法?
正在使obj是正确的方式?如果是这样,如果类是图书馆的一部分,你怎么能这样做。
你可以让obj静态吗?是安全吗?
关于如何实现这一目标的任何建议都会很棒。
解决方案 2
好的我以为我会回答自己的问题,因为我发现了一种目前适合我的方法。 很多这一点来自另一个回答的问题这里!
此方法使用基础util所以从Lee的答案从链接到我只能让我的活动扩展到基本的反应性并添加所需的方法。
然后我在第二个活动中创建一个googleapiclient的新实例,然后获取这样的API客户端:
mGoogleApiClient = getApiClient();
.
我现在可以通过它的第二个活动传递这一点,并呼叫我希望的方法。
作为lee状态在他的答案中,您可以有多个Google API客户端的实例,并且仍然不会被要求为每个人登录,因为它知道您已经登录了。
其他提示
您可以使用应用程序类,一个面向Android型的单身模式类,它可能是您的Apiclient呼叫的基类。
这里是 api 例子以及为什么使用 over singleton 。
我的真实测试是: 1.通过将其作为Intent参数,不能将Googleapiclient作为对象传递给另一个服务或活动。 2.放开单例类解决如下: +步骤1:使单例类包括作为数据成员的GoogLeapiclient对象。请这样做:
import com.google.android.gms.common.api.GoogleApiClient;
public class MyGoogleApiClient_Singleton {
private static final String TAG = "MyGoogleApiClient_Singleton";
private static MyGoogleApiClient_Singleton instance = null;
private static GoogleApiClient mGoogleApiClient = null;
protected MyGoogleApiClient_Singleton() {
}
public static MyGoogleApiClient_Singleton getInstance(GoogleApiClient aGoogleApiClient) {
if(instance == null) {
instance = new MyGoogleApiClient_Singleton();
if (mGoogleApiClient == null)
mGoogleApiClient = aGoogleApiClient;
}
return instance;
}
public GoogleApiClient get_GoogleApiClient(){
return mGoogleApiClient;
}
}
.
-
步骤2:在主活动类中,初始化roogleapiclient对象,然后使用mgoogleapiclient调用getInstance作为单例基类的参数。
-
步骤3:在您要传递googleapiclient对象的另一个服务/活动中,只需调用getInstance(null)单例baseclass,并调用get_googleapiclient来获取所需的googleapiclient对象。
如果有任何问题,请联系我thienpham2008@gmail.com。
如果您需要不断连接到roogleapiclient,那么我可能会使单例类来处理googleapiclient调用( http://en.wikipedia.org/wiki/singleton_pattern )或制作将为整个应用程序生命周期运行的后台服务( https://developer.android.com/traine/best-background.html )。
来自开发人员文档 :
googleapiclient与各种静态方法一起使用。一些 这些方法要求连接谷歌,有些意志 在连接googleapiclient之前队列呼叫;检查具体 API文档以确定是否需要连接。
如果您不需要立即发送数据,Googleapiclient将队列队列要为您发送的数据,并在主要活动中发送。