我需要在多个活动中使用mGoogleApiClient
,因此我决定创建一个MyApplication
extends
类的Application
课程:
public class MyApplication extends Application {
public static GoogleApiClient mGoogleApiClient;
public Context mContext;
@Override
public void onCreate() {
super.onCreate();
mGoogleApiClient = new GoogleApiClient.Builder(mContext)
.addConnectionCallbacks(mContext)
.addOnConnectionFailedListener(mContext)
.addApi(Plus.API).addScope(Plus.SCOPE_PLUS_LOGIN)
.addApi(Games.API).addScope(Games.SCOPE_GAMES)
.build();
}
@Override
public void onTerminate() {
super.onTerminate();
}
}
然而,这两行存在问题:
.addConnectionCallbacks(mContext)
.addOnConnectionFailedListener(mContext)
因为我需要实现
GoogleApiClient.ConnectionCallbacks
和GoogleApiClient.OnConnectionFailedListener
然后覆盖这些方法:
@Override
public void onConnected(Bundle bundle) {
}
@Override
public void onConnectionSuspended(int i) {
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
}
Application
类一般是implement
允许interface
我应该这样做,还是应该从mGoogleApiClient
中删除这两行并可能将它们初始化在其他活动中?
我不知道Application
类将如何处理这些方法和连接状态,以及我是否需要在其他活动中再次实现这些方法。
有什么建议吗?
答案 0 :(得分:0)
您的MyApplication
是Application
的子类,仅适用于您的应用。 Android只会使用Application
部分,但您可以实现所需的任何内容。
但是你应该意识到一次只能有一个应用程序类的实例。
如果您需要多个回调,例如,如果它们存储状态,那么由于状态更改,MyApplication
实现它们将无法正常工作。在这种情况下,实例化内部类是更好的选择。
这看起来你只会使用一次回调,所以让MyApplication
实现它们就可以了。
应用程序类是实例化API客户端之类的好地方。这可确保创建的不超过一个并且始终可用。
另请注意,Application
是一种上下文,因此您可以使用this
代替mContext
。