如何在Android中绕过Firebase数据库刷新
当我当前处于其他活动时,如果我的数据库更改,请将我的应用程序转到列表视图页面,如下所示: 我想知道如何在当前未查看该活动时停止刷新数据 操作码如何在Android中绕过Firebase数据库刷新,android,firebase,firebase-realtime-database,Android,Firebase,Firebase Realtime Database,当我当前处于其他活动时,如果我的数据库更改,请将我的应用程序转到列表视图页面,如下所示: 我想知道如何在当前未查看该活动时停止刷新数据 操作码 DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("new"); myRef.addValueEventListener(new ValueEventListener() { @Override public
DatabaseReference myRef = FirebaseDatabase.getInstance().getReference().child("new");
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
// This method is called once with the initial value and again
// whenever data at this location is updated.
// Object key = dataSnapshot.getValue();
if (dataSnapshot.hasChild(ch) ) {
Map<String ,Object> key = (Map<String, Object>) dataSnapshot.child(ch).getValue();
sname = (String) key.get("sname");
// Log.v("ABCD ", "Value is: " + key.get("sname"));
if(dataSnapshot.getValue() != null)
{
Intent intent = new Intent("com.example.sunny.new.Selectclass");
startActivity(intent);
finish();
}
} else{
AlertDialog.Builder builder1 = new AlertDialog.Builder(MainActivity.this);
builder1.setMessage("Check your Code");
builder1.setCancelable(true);
builder1.setPositiveButton(
"Ok",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
}
}
@Override
public void onCancelled(DatabaseError error) {
// Failed to read value
Log.v("XYZ", "Failed to read value.", error.toException());
}
});
DatabaseReference myRef=FirebaseDatabase.getInstance().getReference().child(“新”);
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
公共void onDataChange(DataSnapshot DataSnapshot){
//使用初始值调用此方法一次,然后再次调用
//每当更新此位置的数据时。
//对象键=dataSnapshot.getValue();
if(dataSnapshot.hasChild(ch)){
Map key=(Map)dataSnapshot.child(ch.getValue();
sname=(String)key.get(“sname”);
//Log.v(“ABCD”,“值为:”+key.get(“sname”);
if(dataSnapshot.getValue()!=null)
{
Intent Intent=newintent(“com.example.sunny.new.Selectclass”);
星触觉(意向);
完成();
}
}否则{
AlertDialog.Builder builder1=新建AlertDialog.Builder(MainActivity.this);
builder1.setMessage(“检查代码”);
builder1.setCancelable(true);
builder1.setPositiveButton(
“好的”,
新建DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
dialog.cancel();
}
});
AlertDialog alert11=builder1.create();
alert11.show();
}
}
@凌驾
已取消的公共无效(DatabaseError错误){
//无法读取值
Log.v(“XYZ”,“读取值失败”,error.toException());
}
});
在活动的onPause
方法中,删除事件侦听器。并将其添加到onResume
方法中
详细信息:
将DatabaseReference
和ValueEventListener
定义为可访问变量,因为您将在onPause
和onResume
方法中引用它们:
ValueEventListener myValueEventListner;
DatabaseReference myRef;
// Below may be inside onCreate method:
myRef = FirebaseDatabase.getInstance().getReference().child("new");
myValueEventListner= new ValueEventListener() {
// your event listener logic here
};
在onPause和onResume方法中添加和删除:
@Override
public void onResume() {
super.onResume();
myRef.addValueEventListener(myValueEventListner);
}
@Override
public void onPause() {
super.onPause();
myRef.removeEventListener(myValueEventListner);
}
在活动的
onPause
方法中,删除事件侦听器。并将其添加到onResume
方法中
详细信息:
将DatabaseReference
和ValueEventListener
定义为可访问变量,因为您将在onPause
和onResume
方法中引用它们:
ValueEventListener myValueEventListner;
DatabaseReference myRef;
// Below may be inside onCreate method:
myRef = FirebaseDatabase.getInstance().getReference().child("new");
myValueEventListner= new ValueEventListener() {
// your event listener logic here
};
在onPause和onResume方法中添加和删除:
@Override
public void onResume() {
super.onResume();
myRef.addValueEventListener(myValueEventListner);
}
@Override
public void onPause() {
super.onPause();
myRef.removeEventListener(myValueEventListner);
}
假设我的应用程序有3个屏幕[screen1->screen2->screen3],如果我在screen3并且正在进行firebase数据库更新,那么我的应用程序会自动移动到screen1,如果您想在screen3并更新数据库时打开screen1;您还应该在screen3上收听数据库更新。这实际上是发生的事情,我不想这样,我该如何防止this@ghost当你不想刷新更改时,为什么不删除VentListener?当我在screen1或任何其他屏幕上时,我需要该监听器,这就是为什么我的应用程序有3个屏幕[screen1->screen2->screen3]如果我在screen3上并且正在进行firebase数据库更新,那么当您在screen3上并且数据库更新时,如果您想打开screen1,我的应用程序将自动移动到screen1;您还应该在screen3上收听数据库更新。这实际上是发生的事情,我不想这样,我该如何防止this@ghost当你不想刷新更改时,为什么不删除VentListener?当我在screen1或任何其他屏幕上时,我需要那个监听器,这就是为什么