Android 安卓:当网络连接不工作时,应用程序正在崩溃
我的Android游戏需要从我的服务器获取一些关于玩家的信息。我通过一个简单的HTTPGET请求来实现这一点,我将它放在一个线程中 下面是我正在使用的代码。当我的服务器启动并运行时,应用程序工作正常。但是,当我的服务器没有响应时(因为忙或停机),应用程序就会崩溃 我不想让应用程序崩溃,而是想向用户显示一条“网络正忙”的消息,并将其发送回主要活动,但不确定如何执行 我试图在Catch部分中创建一个对话框,认为这会显示我的服务器是否关闭,但它不会显示,应用程序会崩溃 有没有办法解决这个问题Android 安卓:当网络连接不工作时,应用程序正在崩溃,android,Android,我的Android游戏需要从我的服务器获取一些关于玩家的信息。我通过一个简单的HTTPGET请求来实现这一点,我将它放在一个线程中 下面是我正在使用的代码。当我的服务器启动并运行时,应用程序工作正常。但是,当我的服务器没有响应时(因为忙或停机),应用程序就会崩溃 我不想让应用程序崩溃,而是想向用户显示一条“网络正忙”的消息,并将其发送回主要活动,但不确定如何执行 我试图在Catch部分中创建一个对话框,认为这会显示我的服务器是否关闭,但它不会显示,应用程序会崩溃 有没有办法解决这个问题 publ
public void run(){
String urlstring = "http://www.mydomain.com/?param=test";
try{
URL url = new URL(urlstring);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
BufferedReader reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
line = reader.readLine();
}
catch(Exception e){
Dialog d2 = new Dialog(context);
d2.setContentView(R.layout.dialog2);
d2.show();
}
}
更新:我想我在logcat上发现了问题。即使服务器关闭,我的BufferedReader仍返回一个空字符串,我一直在尝试使用它 所以首先,你应该检查一下你的回答。这是最好的办法
if (urlConntection.getResponseCode() == HttpURLConnection.HTTP_OK) {
// method body
}
else {
/// get some info for example with Toast or Dialog
}
当您想从非UI thead
更新UI
时,应决定使用runOnUiThread
YourActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
或者使用处理程序
或异步任务
当您决定使用AsyncTask
时,您可以简单地显示几乎所有内容
protected void onProgressUpdate(String... data) {
if(data[0].equals("error")) {
Toast.makeText(Activity.this, "Connection is busy!", Toast.LENGTH_SHORT).show();
}
也只需显示
对话框
。如果你想在UI线程上做一些事情(比如打开对话框,修改视图等),你应该考虑使用<代码> AycCastase<代码>。哦,发布logcat的堆栈跟踪。如果我在“捕获”部分没有做任何事情,应用程序仍在崩溃,因此我认为这与我的对话框无关。那么,139行上的任何东西都是罪魁祸首。您是否在不检查列表边界的情况下从列表中获取要下载的URL?