2

私は内側に を持っActivityています。ViewPager作成されたアクティビティasyncTaskが実行され、タスクが終了するFragmentと、結果データを使用して が作成されますFragment

が作成された後Fragment、ホーム画面に戻り、別のアプリなどを開いて、メモリ不足の状況を作成します。私Activityはメモリ不足のために殺されました。

タスクマネージャーを開き、アプリをもう一度クリックします。

Android は、すべてを画面に戻そうとします。すべてActivityが強制終了されるため、データも失われますが、データがなく、アプリがクラッシュしてもフラグメントを再作成しようとします。

私は何ができますか?...私には2つの解決策があります(少なくとも理論的な解決策)

  1. 再開時にアクティビティが再起動しないようにします (どうすればそれを行うことができますか????)

  2. フラグメント作成ビューが存在しない限り、データを使用しないようにする

さて、私は2番目の解決策を実装しました。したがって、「データが存在しません」がハンドヘルドであるため、アプリは最初はクラッシュしません。しかし、私は ViewPager もフラグメントから切断されていることに気付きました。そのため、アクティビティからフラグメントに戻ることができません。

4

3 に答える 3

1

非同期タスク onCreate を実行する代わりに、onResume で実行して、アプリがトップに戻るたびに呼び出されるようにします

フラグメントに関しては、それを作成するか、Async タスクの onPostExecute で呼び出して、データが確実に読み込まれるようにします。(リクエストに応じて(ボタンクリックなどで) is else where を呼び出す場合は、ブール変数による呼び出しを条件付け、 onResume でこの変数を false に設定し、非同期タスクの onPostExecute で true に設定します)

もう 1 つ: Async タスクで (cancelable = false) の進行状況ダイアログを表示して、データの整合性を確保し、データが完全に読み込まれない限りユーザーがページャーをナビゲートできないようにすることができます。 (diss miss) onPostExecute で

-- この助けを願っています :)

于 2014-02-19T21:26:45.000 に答える
0

Activity では、このコードで ViewPager の Fragment を取得します。

fragment = getSupportFragmentManager().findFragmentByTag("android:switcher:" + R.id.rewards_viewpager + ":"+position);

それで

fragment.doSomething();
于 2016-10-01T06:37:03.473 に答える