我想检查互联网连接是否可用,请致电getData()
,但如果没有,请显示带重试和取消选项的对话框。
如果点击重试,请检查互联网连接;如果可用则调用getData
但如果它不可用,则再次显示该对话框(类似于循环)。
或者,如果点击取消,则完全退出该应用。
我正在使用此课程来检查网络可用性和互联网连接:
public class NetworkCheck {
public static boolean isAvailableAndConnected(Context context) {
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
boolean isNetworkAvailable = cm.getActiveNetworkInfo() != null;
boolean isNetWorkConnected = isNetworkAvailable && cm.getActiveNetworkInfo().isConnected();
return isNetWorkConnected;
}
}
在MainActivity中,我这样做:
if (NetworkCheck.isAvailableAndConnected(this)) {
//Caling method to get data
getData();
} else {
final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
alertDialogBuilder.setTitle("No Internet Connection");
alertDialogBuilder.setMessage("Failed to load. Please ensure ypu're connected to the internet and try again");
alertDialogBuilder.setPositiveButton("Retry", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
if (!NetworkCheck.isAvailableAndConnected(context)) {
alertDialogBuilder.show();
} else {
getData();
}
}
});
alertDialogBuilder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
finish();
}
});
alertDialogBuilder.show();
}
根据以上代码,我有三个问题:
if (!NetworkCheck.isAvailableAndConnected(context)) {
上下文以红色突出显示,当我将鼠标悬停时,我看到无法解析符号'上下文'。如果我将方法留空或键入this
或getActivity
; Android Studio抱怨。哪个参数显示我通过了该方法?finish()
只会杀死该活动。不是整个应用程序被杀死了怎么办?答案 0 :(得分:1)
1)如果你没有使用片段,在上下文的地方,你可以像这样做一个解决方法(首先你声明):
final Context mContext;
mContext = this;
然后您将 context
替换为 mContext
2)杀死活动不是建议(您可能已经阅读过活动生命周期),但您可以尝试android.os.Process.killProcess(android.os.Process.myPid());