无法从不同的活动中连接GoogleApiClient实例而不是创建

时间:2017-07-13 13:04:15

标签: android multithreading connection google-api-client

我面临一些奇怪的问题。我正在GoogleApiClient方法中的MainActivity类中创建onCreate()的实例。我正在登录Google帐户的完整信息。

  

MainActivity.java

GoogleApiClient google_api_client;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

          google_api_client = new GoogleApiClient.Builder(getApplicationContext())
                .addConnectionCallbacks(this)
                .addOnConnectionFailedListener(this)
                .addApi(Plus.API, Plus.PlusOptions.builder().build())
                .addScope(Plus.SCOPE_PLUS_LOGIN)
                .addScope(Plus.SCOPE_PLUS_PROFILE)
                .build();
}

    @Override
    protected void onPause() {
          MemoryStore.setGoogle_api_client(google_api_client);
          Log.d("", "isConnected=" + google_api_client.isConnected()); // Prints true.
    }

我将此实例存储在公共类中,即MemoryStore.java

  

MemoryStore.java

    private static GoogleApiClient google_api_client;

    public static GoogleApiClient getGoogle_api_client() {
        return google_api_client;
    }

    public static void setGoogle_api_client(GoogleApiClient client) {
        google_api_client = client;
    }

现在在另一个活动课程中说FriendsListActivity.java,我在按钮点击时断开了这个GoogleApiClient。在此之前,我正在检查该实例是否在不同的类方法中连接。

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        Log.d("", "isConnected=" + MemoryStore.getGoogle_api_client().isConnected()); // Prints true.
    }

    @Override
    public void onClick(View v) {
        Log.d("", "isConnected=" + MemoryStore.getGoogle_api_client().isConnected()); // Prints false.
    }

令我惊讶的是,它总是说 google_api_client已在onClick() 方法中断开连接,并始终在google_api_client中说明 onCreate()已关联或onResume()方法

即使我在断开连接之前检查了 AlertDialog 以确认,我点击了OK按钮,我的实例已断开连接

ui线程可能有问题吗?比如我从主线程以外的地方访问实例?


任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:0)

断开Goog​​leApiClient后,将MemoryStore类中的对象设置为null。

MemoryStore.setGoogle_api_client(null);

无论何时再次需要,请按照在MainActivity

中完成的方式再次设置