1

次のシナリオがあります: アクティビティ A で、ユーザーがボタンをクリックすると、アプリはサーバーにリクエストを送信して情報を取得し、この情報はアクティビティ B を開始するインテントに配置されます。

アクティビティ B のonCreateメソッドでsetContentView(R.layout.activity_b)(このレイアウトは非常に複雑なので、XML からインフレートするのにも時間がかかります)、一連の初期化を行います。最後にonStart、コンポーネントの最終的な準備/配置を行います。

アクティビティ A では、ユーザーがボタンを押すとAsyncTask、サーバーから情報を取得してアクティビティ B を開始する を開始し、必要な情報をインテントに渡します。「startActivity」を呼び出すと、アクティビティ B のウィンドウがすぐに所定の位置にスライドしますが、初期化が完了するまでに数秒かかる場合があります。この数秒間、黒い画面が表示されます。そして、最後にonStartが実行され、すべてが続行されます。

私がやりたいことは、アクティビティ B が表示される前に、このすべての初期化を画面外で完了して、「到着」したときにすべてのレイアウトが既に存在するようにすることです。これを達成する方法はありますか?

4

2 に答える 2

0

おそらくフラグメントが役立つ可能性がありますか?アクティビティAとBをフラグメントAとBに変更し、フラグメントBを表示せずにバックグラウンドでロードします。

于 2012-06-14T14:25:29.213 に答える
0

私はあなたができるとは思わない。本来の活動は、画面に表示されている間だけ「生きている」ものです。

したがって、画面のフォアグラウンドに表示されていない状態で、アクティビティに作業を開始する(つまり、ビューをインスタンス化する)ように通知する方法はないと思います。

ユーザーエクスペリエンスを向上させるための最善のオプションは、ユーザーが読み込んでいることを示す何らかの進行状況インジケーターを使用し、読み込みが完了すると非表示になることです。

于 2012-06-14T13:14:13.667 に答える