1

現在、これが私がフォローしているものです。アプリが起動したらすぐに、RESTサービスのリクエストを送信する必要があります。少し時間がかかるので、ロード画面を表示することを考えました。

私のアクティビティではonCreate()、最初にロード画面(進行状況ダイアログ)を表示し、AsyncTaskを使用してバックグラウンドアクティビティを開始します。つまり、RESTサービスを要求しonPostexecute()、ダイアログを閉じてからsetContentView(myxml);、UIを更新します。

このアプローチを改善できますか?

私が直面した問題は、

ガベージコレクターが起動し(さまざまな理由で)、アプリがロード画面で永久にハングすることがあります。ガベージコレクターが原因で、RESTサービスのリクエストも送信されず、ウェイクアップコールが発生し、休憩が災害になり、強制終了します。 。

ただし、ForceCloseでさえ高速にならない場合があります。これは、GCが原因である可能性があります。だから私は戻ってロード画面で立ち往生することさえできません。その時点で私にできることは、家に帰ることだけです。その後、アプリに戻ってもまだ読み込まれているので、間違いなくこのアプローチは悪い設計のようです。正しいアプローチは何ですか?

4

3 に答える 3

1

REST呼び出しにかなりの時間がかかると予想される場合は、非同期タスクの代わりにサービスの使用を検討する必要があります。なんで?向きが変わるたびに、アクティビティが破棄され、新しい非同期タスクが再度作成されるため、REST呼び出しは最初からやり直されます。一方、サービスを使用する場合は、REST呼び出しを1回発行して、アクティビティ内のステータスのみをトレースできます(onPause、onCreate関数を適切に処理する必要があります)。

あなたの問題がガベージコレクターと関係があるのではないかと思います。強制終了後にスタックトレースを確認し、実際に何が起こっているのかを理解してください。それはあなたが何か間違ったことをしているに違いありません...

于 2011-02-18T07:47:41.770 に答える
1

ここで行ったように、スプラッシュ画面を実装できます

これは基本的に、スプラッシュ画像を表示する非同期タスクを開始し、51行目で作業を実行しdoInBackground()、その後、次のアクティビティに転送します。

于 2011-02-18T07:25:19.160 に答える
0

ビデオGoogleI/ O 2010-Android RESTクライアントアプリケーションを見たことがありますか?ページhttp://developer.android.com/videos/index.html

于 2011-02-18T07:23:55.340 に答える