3

2つのアクティビティがあります。アクティビティAはアクティビティBを開始します。次に、アクティビティBはデータベースからいくつかのものをロードし、データを視覚化します。Bのすべてのものを完全に初期化するには、ある程度の時間(5〜10秒)がかかります。

私の問題は、Bの戻るボタンを押すと、Bアクティビティが破棄され(onDestroyが呼び出され)、アクティビティAに戻ることです。アクティビティAに戻りたいのですが、Bを破棄せずに、もう一度Bを起動すると、それがすべてのことをする前にもう一度待ってください(これは迷惑です)。これはどういうわけか可能ですか?

ご協力いただきありがとうございます!

4

5 に答える 5

5

sを使用できますFragmentが、本当にやりたいのは情報をキャッシュすることです。それ以外の場合は、とにかくデバイスの回転でリロードします(FragmentsとsetRetainInstancetrueを使用しない限り、ただし、これにより他の頭痛の種が発生する可能性があります)。

CursorLoaderアクティビティBでを使用しonCreateます。onLoadFinished結果をキャッシュしてUIを設定します。以降のロードでは、結果がキャッシュされ、ローダーを使用しなくなります。さらに、を使用するCursorLoaderと、基になるデータベースの結果が変更された場合にアラートが表示されます。

于 2013-03-25T21:38:41.240 に答える
2

私はあなたが正しい観点から問題を見ていないと思います。

Androidが望むなら、Bが破壊されるのを防ぐことはできないと思います(アクティビティを処理するのはBに任されているため)。ただし、常に持続できる3番目のクラスですべての長い初期化を移動することを選択できます。したがって、この初期化フェーズをBアクティビティから独立させる必要があります。

これらすべてをApplicationクラスの属性に入れるのは良い考えだと思います。

于 2013-03-25T21:35:04.270 に答える
0

たぶんあなたはAndroidFragmentsを使うことができます

于 2013-03-25T21:30:22.633 に答える
0

SharedPreferencesを使用してキーと値のペアを格納し、を使用getSharedPreferences()してそれらを取得します。

于 2013-03-25T21:40:33.920 に答える
0

戻るボタンを押すと、アクティビティbが破棄されます。それはアンドロイドがどのように機能するかです。デフォルトの機能を上書きしようとはしません

データベースからデータを取得したら、どこかにキャッシュしてロードできます。

http://developer.android.com/guide/topics/data/data-storage.html。キャッシュファイルの保存のトピックを確認してください。

于 2013-03-25T21:40:46.880 に答える