【发布时间】:2017-07-13 13:04:14
【问题描述】:
我遇到了一些奇怪的问题。我正在onCreate() 方法中的MainActivity 类中创建GoogleApiClient 的实例。我正在登录 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 is disconnected in onClick() 方法总是说 google_api_client is connected in onCreate() or onResume() method。
即使我在断开连接之前检查了 AlertDialog 以确认,我也通过点击 OK 按钮获得实例 disconnected。
ui线程会不会有问题?就像我从主线程以外的地方访问实例一样?
任何帮助表示赞赏。
【问题讨论】:
标签: android multithreading connection google-api-client