方法检查连接是否有一些延迟。也就是说,如果我们在运行应用程序时连接到互联网,我们将首先收到消息,表示我们“未连接”,毫秒后将收到我们“已连接”的正确答案。在我的情况下这种延迟是至关重要的,因为我想通知用户他必须打开互联网只需一次从firebase数据库上传数据,但如果它已经打开,则该消息看起来很傻。有什么建议?
Logcat消息:
02-22 22:39:09.562 15945-15945/com.example.robert.aplikacjaitp D/BaseActivity: onDataChange on MainActivity: not connected
02-22 22:39:10.480 15945-15945/com.example.robert.aplikacjaitp D/BaseActivity: onDataChange on MainActivity: connected
在onCreate中运行的方法
[旧版]:
void isConnected(){
Firebase.setAndroidContext(this);
connectedRef = new Firebase("https://testowa-baza-59b76.firebaseio.com/.info/connected");
application = new Application();
mFacultiesReference = FirebaseDatabase.getInstance().getReference(Constants.KIERUNKI);
mFacultiesReference.keepSynced(true);
connectedRef.addValueEventListener(new com.firebase.client.ValueEventListener() {
@Override
public void onDataChange(com.firebase.client.DataSnapshot dataSnapshot) {
boolean connected = dataSnapshot.getValue(Boolean.class);
if (connected) {
application.unregisterActivityLifecycleCallbacks(new FirebaseDatabaseConnectionHandler());
Log.d(TAG, "onDataChange on MainActivity: connected");
} else {
Log.d(TAG, "onDataChange on MainActivity: not connected");
dataProcessingAlert();
}
}
@Override
public void onCancelled(FirebaseError firebaseError) {
}
});
}
[新版本]已升级的Firebase SDK
void isConnected(){
connectedRef = FirebaseDatabase.getInstance().getReferenceFromUrl("https://testowa-baza-59b76.firebaseio.com/.info/connected");
application = new Application();
mFacultiesReference = FirebaseDatabase.getInstance().getReference(Constants.KIERUNKI);
mFacultiesReference.keepSynced(true);
connectedRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
boolean connected = dataSnapshot.getValue(Boolean.class);
if (connected) {
application.unregisterActivityLifecycleCallbacks(new FirebaseDatabaseConnectionHandler());
Log.d(TAG, "onDataChange on MainActivity: connected");
} else {
Log.d(TAG, "onDataChange on MainActivity: not connected");
dataProcessingAlert();
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}