0

私が持っているもの:

私のアプリには、基本的なネストされた構造を持つ3つのアクティビティがあります。

アクティビティ1->アクティビティ2->アクティビティ3

アクティビティ2には、に埋め込まれたデータが含まれていArrayList<CustomClass>ます。CustomClassアプリケーションを拡張し(ここで説明します)、アクティビティ3はこれを使用しCustomClassてアクティビティ2のデータを変更します。

私が欲しいもの:

ユーザーがホームボタンを押して、後でアプリを再度開いたときに、スタックの一番上にあったアクティビティに戻りたいと思います。(これはAndroidのデフォルトの動作であると思われます。)

Eclipseエミュレーターでは正常に動作しますが、Google NexusOneとHuaweiHonourの両方で、タスクが完全に再開されます。

標準、singleTop、singleTask起動モードで実行するようにアクティビティを設定してみました。電話で得られる最良の結果は、アクティビティ1(単なるフォーム)に戻り、アクティビティ2を作成する前にテキストフィールドに入力した内容を表示することでした。

また、[ホーム]をクリックして、[設定]で[実行中のアプリケーション]を確認すると、アプリが表示されないことにも気づきました。たぶんAndroidが私のタスクを破壊している可能性があり、アクティビティの状態を保存する必要があります。しかし、ホームを押してすぐにアプリに再度入ると、これは意味がありませんか?

アドバイスをいただければ幸いです。

4

1 に答える 1

0

ホームボタンを押してアクティビティが開始さonPause()れると、その状態が維持されるという保証はありません(同じ状態が維持されている場合でも、アクティビティがメモリに保持される実際の時間は保証されません)。これは、特にデバイスと、デバイスが内部メモリを処理する方法によって異なります。(Androidアクティビティのライフサイクルを示すこの図を参照してください)。

ベストプラクティスは、常に状態をonSaveInstanceStateメソッドに保存することです。この投稿は、それを行う方法についての良い簡単な例を提供します。

于 2012-07-04T17:15:36.687 に答える