我有这种情况:
>显示进度对话框.
>呼叫Firebase.
>数据获取后隐藏进度对话框
可以正常工作,但是当设备没有Internet连接时就会出现问题,在这种情况下,总是显示进度对话框,当设备没有Internet时我想做的就是关闭进度并显示错误消息.
这是我的代码:
showProgessDialog(); FirebaseDatabase database = FirebaseDatabase.getInstance(); DatabaseReference myRef = database.getReference("hello"); DatabaseReference connectedRef = FirebaseDatabase.getInstance().getReference(".info/connected"); connectedRef.addValueEventListener(new ValueEventListener() { @OverrIDe public voID onDataChange(DataSnapshot snapshot) { boolean connected = snapshot.getValue(Boolean.class); if (connected) { Log.d(Constans.LOG,"1.- datachange connected"); hIDeProgressDialog(); } else { Log.d(Constans.LOG,"2.- datachange disconnected"); showProgessDialog(); } } @OverrIDe public voID onCancelled(DatabaseError error) { System.err.println("3.- datachange cancelled"); } }); myRef.addListenerForSingleValueEvent(new ValueEventListener() { @OverrIDe public voID onDataChange(DataSnapshot dataSnapshot) { Log.d(Constans.LOG,"4.- myRef addListenerForSingleValueEvent onDataChange"); } @OverrIDe public voID onCancelled(DatabaseError databaseError) { Log.d(Constans.LOG,"5.- myRef addListenerForSingleValueEvent cancell"); } }); myRef.addValueEventListener(new ValueEventListener() { @OverrIDe public voID onDataChange(DataSnapshot dataSnapshot) { Log.d(Constans.LOG,"6.- myRef addValueEventListener onDataChange"); String value = dataSnapshot.getValue(String.class); mAboutMe.setText(value); } @OverrIDe public voID onCancelled(DatabaseError error) { Log.d(Constans.LOG,"7.- myRef addValueEventListener error"+error.getDetails()); } });
如您所见,所有被调用的方法在日志行中都有一个数字,当设备具有互联网连接时,这些方法的调用顺序为:
2,1,6,4
没有互联网的时候就叫
2
我无法在打开它的位置关闭进度.
关于使用Firebase框架可以做什么的任何想法?
解决方法:
您可以使用此类的isConnected方法检查设备的Internet连接.然后在没有互联网连接时关闭进度对话框
public class InternetConnectionDetector{ private Context context; public InternetConnectionDetector(Context context) { this.context = context; } public boolean isConnected() { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); //There are changes after apk lollipop while detecting internet connection: //if user's os newer then lollipop: if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LolliPOP) { Network[] networks = connectivityManager.getAllNetworks(); NetworkInfo networkInfo; for(Network mNetwork : networks) { networkInfo = connectivityManager.getNetworkInfo(mNetwork); if(networkInfo.getState().equals(NetworkInfo.State.CONNECTED)) { return true; } } } //if user's os older then lollipop: else { //getAllNetworkInfo method work for only before API 19: NetworkInfo[] info = connectivityManager.getAllNetworkInfo(); if(info != null) { for(NetworkInfo anInfo : info) { if(anInfo.getState() == NetworkInfo.State.CONNECTED) { return true; } } } } return false; }}
总结 以上是内存溢出为你收集整理的android-在没有互联网的设备上通过Firebase隐藏ProgressDialog全部内容,希望文章能够帮你解决android-在没有互联网的设备上通过Firebase隐藏ProgressDialog所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)