私のアプリでは、xmlで応答するサーバーに接続します。私はSAX Parserと解析し、データを取得します。Android - インターネットからデータをダウンロードする>>接続エラーをキャッチ
質問です:
接続の問題に対処するための最良の方法は何ですか?
(利用可能なインターネット接続がない場合はこの時点でアプリは、単に私が実装ProgressDialog
を示し続けて)
私のアプリでは、xmlで応答するサーバーに接続します。私はSAX Parserと解析し、データを取得します。Android - インターネットからデータをダウンロードする>>接続エラーをキャッチ
質問です:
接続の問題に対処するための最良の方法は何ですか?
(利用可能なインターネット接続がない場合はこの時点でアプリは、単に私が実装ProgressDialog
を示し続けて)
Heiko Ruppの提案に従うだけでなく、ダウンロードを実行する前にネットワーク接続の可用性をチェックすることもできます。 my post on the subjectを参照してください。
だから、基本的には(擬似コード)この場合
ProgessDialog pd = new ProgressDialog(this).show();
Sax.parseStuff();
pd.dismiss();
、ラップを行います解析のものとあなたはまたtry { .. } catch (XYZException e ; pd.cancel(); throw e)
かの操作を行うことができ例外
ProgessDialog pd = new ProgressDialog(this).show();
try {
Sax.parseStuff();
}
finally {
pd.dismiss(); // or cancel
}
にダイアログをキャンセルアプリの別のレイヤーでExceptionを処理したいとします。
私はあなたの方法を試してみましたが、インターネット接続を無効にすると、ProgressDialogが表示されたままになっていました... – Abramodj
@Abramodjダイアログをポップアップして試してみる前に、リモートサーバーに接続すると、この問題を回避できます。私のポストのリンクを参照してください。 –
ありがとう、これは非常にうまくいきます! – Abramodj
いいえ、これはうまく機能しません。ダウンロード前に接続をチェックしても、ダウンロードプロセス中に接続が失われないことは保証されていません。 – junmats
@junmatsでは、両方の方法を同時に使用する必要があります。つまり、開始する前に接続が利用可能であることを確認し、ダウンロード処理中に発生したエラーを捕まえて処理します。たとえば、接続が再度利用可能になったときにダウンロードをキューイングしてから再開します。 –