扩展Application类

时间:2015-05-03 23:21:06

标签: android interface google-play-services

我需要在多个活动中使用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.ConnectionCallbacksGoogleApiClient.OnConnectionFailedListener

然后覆盖这些方法:

@Override
public void onConnected(Bundle bundle) {

}

@Override
public void onConnectionSuspended(int i) {

}

@Override
public void onConnectionFailed(ConnectionResult connectionResult) {

}

Application类一般是implement允许interface我应该这样做,还是应该从mGoogleApiClient中删除这两行并可能将它们初始化在其他活动中?

我不知道Application类将如何处理这些方法和连接状态,以及我是否需要在其他活动中再次实现这些方法。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

您的MyApplicationApplication的子类,仅适用于您的应用。 Android只会使用Application部分,但您可以实现所需的任何内容。

但是你应该意识到一次只能有一个应用程序类的实例。

如果您需要多个回调,例如,如果它们存储状态,那么由于状态更改,MyApplication实现它们将无法正常工作。在这种情况下,实例化内部类是更好的选择。

这看起来你只会使用一次回调,所以让MyApplication实现它们就可以了。

应用程序类是实例化API客户端之类的好地方。这可确保创建的不超过一个并且始终可用。

另请注意,Application是一种上下文,因此您可以使用this代替mContext