私はAPIからフェッチするためにSAXParserFactoryとXMLリーダーを使用しています。しかし、インターネット接続がダウンすると、スタックされてアプリケーションがクラッシュしてしまいます。例外処理の概念はあまりよくありません。誰もが解決策を見つけるのを助けることができます。私はその操作を停止し、接続が失敗したときにカスタムメッセージを表示したい。 助けてください。 非常に緊急..接続に失敗しましたか?
0
A
答えて
1
あなたが行うことができます
try {
... do the IO and SAX parsing
} catch (Exception e) {
Toast.makeToast(context, "Failure: " + e.getMessage(), Toast.LENGTH_SHORT).show();
}
のようなものがあること言った:アンドロイド3以降では、ネットワークIOが(ときにシステムアプリを殺すバックグラウンドタスクにする必要がありますUIスレッドでネットワークIOを行う)、ioをバックグラウンドで置く必要があります。これは定義上UIにアクセスできません。
ここで(擬似コード)のようなパターンを助けることができる:
class MyAsyncTask extends AsyncTask {
String doInBackground() {
try {
... do IO/parsing
}
catch (Exception e) {
return e.getMessage();
}
return "ok";
}
onPostExecute(String in) {
Toast.makeToas(... in ...);
}
}
0
ここでは、Androidでネットワーク通信を実行する方法を詳細サンプルコードである:
try {
url = new URL(ForumURL);
URLConnection connection = url.openConnection();
//Set connection time out to 10 secs
HttpURLConnection httpConnection = (HttpURLConnection) connection;
httpConnection.setConnectTimeout(10*1000);
int responseCode = httpConnection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK)
{
InputStream in = httpConnection.getInputStream();
DocumentBuilderFactory dbf;
dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document dom = db.parse(in);
} //You can put an else condition here, if you want to process any error situations.
} catch (Exception e) {
//Your exception handler code here.
return;
}//catch (Exception e)
注意の言葉。 Androidでネットワーク通信を行うときは、メインのUIスレッドではなく、別のスレッドを使用して行います。この理由は、遅いネットワークでネットワーク操作を実行すると、アンドロイドOSによってANRでアプリが強制終了されるためです。
関連する問題
- 1. BTrDB接続に失敗しました
- 2. Rmysql接続に失敗しました
- 3. RODBC接続に失敗しました
- 4. FTP接続に失敗しました
- 5. インターネットデータ接続に失敗しました
- 6. Mongodb接続に失敗しました
- 7. SMTP接続に失敗しました
- 8. TCP接続に失敗しました
- 9. Redis接続に失敗しました
- 10. ハンドシェイク失敗でTLSv1接続に失敗しました
- 11. c#接続されたホストが応答に失敗したためにgmail接続に失敗しました
- 12. XMPP strophe接続接続プロセスに失敗しました
- 13. java.net.ConnectException:localhost/127.0.0.1への接続に失敗しました(ポート8080):接続に失敗しました:ECONNREFUSED ...(コードネームOne App)
- 14. Cf接続されたホストが応答に失敗したためログ接続が失敗しました
- 15. 接続されたホストが応答に失敗したためAzure接続が失敗しましたip:443
- 16. CodePush - localhost/127.0.0.1(ポート3000)への接続に失敗しました:接続に失敗しました:ECONNREFUSED(接続が拒否されました)
- 17. RuntimeException:カメラサービスへの接続に失敗しましたか?
- 18. アプリケーションからSQLサーバー接続に失敗しました
- 19. ノードjsで接続の検出に失敗しましたか?
- 20. Vugen:ロードランナーからデータベース接続に失敗しました
- 21. DISQUSからエラー503接続に失敗しました
- 22. データベース接続に失敗しました:AD接続を作成できません:[DB接続](接続)
- 23. アンドロイドが失敗したhttps接続
- 24. GitHub "githubへの接続に失敗しました"エラーなし
- 25. ExpressとParseServer - 接続に失敗しました<ip>ポート1337、接続タイムアウト
- 26. WSO2 IoTサーバー接続カップサンプルエージェントがMQTTブローカーへの接続に失敗しました
- 27. SMTP - > ERROR:サーバーへの接続に失敗しました:接続が
- 28. WebSocket接続に失敗しました:接続確立エラー:net :: ERR_SSL_PROTOCOL_ERROR
- 29. 同じ接続でもmongodbの接続に失敗しました。
- 30. /192.168.15.186(ポート80)への接続に失敗しました解決方法:失敗した接続:私はアンドロイドスタジオの接続をテストしようとしている
'catch(Exception e) 'を介してすべての例外をキャッチすることは非常に悪いことです。あなたは 'IOException'や他のより特定の例外をうまく捕らえるべきです。例えば、 'OutOfMemoryException'は他の部分であなたのプログラムを破壊するでしょう。 – rekire