私のアプリケーションのほとんどすべてのアクティビティは、データを取得してからアクティビティ画面をロードするためにWebサーバーと対話する必要があります。したがって、インターネットが遅い場合はいつでも、多くの時間がかかり、約12〜15秒後に、「ロードできません、ForceClose/Wait」と表示されます。アプリケーションはこれをどのように回避しますか?彼らが従う解決策は何ですか、最初の3-4の活動がうまくいくとき(ネットが良いとき)そしていくつかの活動は時間がかかります(悪いインターネットのため/インターネットがなくなった場合)
3 に答える
コードを最適化することにより、次にネットワーク/インターネットを別のスレッド(AsynTaskなど)で実行します。
リンク:http ://developer.android.com/reference/android/os/AsyncTask.html
これにより、UIがブロックされることはありません。
この助けを願っています
その遅いインターネット接続の問題。また、Webサーバーからデータをフェッチするために使用されるアプリを作成しているときにも直面しました。したがって、この問題で役立つ4つのことがあります。(1)インターネット接続があるかどうかを確認します。
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo ni = cm.getActiveNetworkInfo();
if (ni!=null && ni.isAvailable() && ni.isConnected()) {
return true;
} else {
return false;
}
インターネット接続がない場合は、ダイアログでユーザーに通知できます。
(2)インターネット接続はあるが非常に遅い場合は、応答を一定時間待機してから、要求を待機または中止するためのダイアログをユーザーに表示するためのコードを配置できます。
(3)もう1つ非常に便利なこと-インテント間の遷移には、fade_inとfade_outの代わりにslide_in_leftとslide_out_rightのanimスタイルを使用します。それは大いに役立ちます、画面が黒くなることはめったにありません。
try {
Intent yourIntent = new Intent(view.getContext(), YourActivity.class);
startActivityForResult(yourIntent, 0);
overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
} catch(Exception ex) {
}
(4)AsyncTaskを使用してリクエストをWebに送信します。
電話をかける前に、既存のインターネットまたはデータ接続があるかどうかを確認できます。また、ファイルのロードを試行してからエラーを表示するか、必要に応じて再試行するための特定の時間を指定できる必要があります。