我正在尝试检查Android活动的Internet连接。我有一个类"连接电视"的类,该类返回网络的当前状态,并在捕获网络更改时返回状态。
我在activity
上使用此类的方法。我想要的是,每当方法返回没有Internet连接的方法时,BottomSheetDialogFragment
都应以"重试" button
出现。按下button
时,Bottom Sheets dialog
必须关闭并恢复activity
,然后再次进行Internet检查。基本上,每次关闭Bottom Sheets dialog
时,都应检查Internet。
Internet连接类工作正常,我已经使用日志对其进行了检查,并且每次都在检查Network State
时。问题是dialog
。每次我关闭dialog
时,它都会在不检查Internet的情况下恢复activity
。
NoInternetConnectivity.java
-延伸"底部表格fragment"类的类。
mainActivity.java
public class MainActivity extends AppCompatActivity{
final BottomSheetDialogFragment internetConnectivitySheet = NoInternetConnectivity
.newInstance("New Internet Connectivity Bottom Sheet");
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Manually checking internet connection
checkConnection();
}
/**
* Method to check connection on activity resume
*/
@Override
protected void onResume(){
Log.d(LOG_TAG, "onResume()");
MyApplication.getInstance().setConnectivityListener(this);
checkConnection();
super.onResume();
}
/**
* Method to check internet connection in activity.
*/
private void checkConnection() {
Log.d("Check Connection called", "CHECKING CONNECTION...");
if(!internetConnectivitySheet.isAdded() && !ConnectivityReceiver.isConnected()){
internetConnectivitySheet.show(getSupportFragmentManager(),
internetConnectivitySheet.getTag());
} else if (internetConnectivitySheet.isAdded()) {
internetConnectivitySheet.dismiss();
} else {
//internet is connected :-)
}
}
/**
* Callback will be triggered when there is change in
* network connection
*/
@Override
public void onNetworkConnectionChanged(boolean isConnected) {
Log.d("On Network Change Called", "CHECKING CONNECTION...");
if(!internetConnectivitySheet.isAdded() && !isConnected){
internetConnectivitySheet.show(getSupportFragmentManager(),
internetConnectivitySheet.getTag());
} else if (internetConnectivitySheet.isVisible()) {
internetConnectivitySheet.dismiss();
} else {
//internet is connected :-)
}
}
}
检查日志时,当我关闭dialog
时,活动不会恢复。发生了什么以及如何解决此问题?
活动不会被这种方法暂停是一个干净的解决方案。上面有很多帖子如何在Android中创建自定义对话框?https://developer.android.com/guide/topics/ui/dialogs.html
但是,如果要保留当前实现
public void onNetworkConnectionChanged(boolean isConnected) {
//...
} else if (internetConnectivitySheet.isVisible()) {
internetConnectivitySheet.dismiss();
checkConnection();
} else {
//....
}