我面临一些奇怪的问题。我正在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线程可能有问题吗?比如我从主线程以外的地方访问实例?
任何帮助表示赞赏。
答案 0 :(得分:0)
断开GoogleApiClient后,将MemoryStore类中的对象设置为null。
MemoryStore.setGoogle_api_client(null);
无论何时再次需要,请按照在MainActivity
中完成的方式再次设置