問題タブ [onsaveinstancestate]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
77 参照

android - アプリケーションが再作成される理由

OS の kill/restore アクティビティ (またはアプリ?) に関連するバグがあります。

いくつかのデバッグの後、find if setdon't keep activitiesと set Background process limittono background processは異なる動作を引き起こします。

この投稿を見ましたが、ここでの質問には答えていません。

これが観察されたものです:

アプリケーションでは、短剣コンポーネントを開始し、いくつかのアプリ スコープ シングルトン オブジェクトを維持します。アクティビティ A (デフォルトの起動アクティビティ) では、ユーザーのアクションによってアクティビティ B を起動し、B ではフラグメントを作成してホストします。フラグメントを操作するために、アプリ スコープ シングルトン オブジェクトにいくつかのデータが格納されます。

セットのみの場合don't keep activities、アプリを最小化するとアクティビティ onDestroy() が呼び出され、アプリを再度開くと、最後のアクティブなアクティビティが復元されます (ユーザーがアクティビティ B を開いたとします。B は次のように再作成されます)。 savedInstanceState で復元されたフラグメント)。この場合、短剣によって管理されるアプリ スコープ シングルトン オブジェクトはまだ生きているため、状態はアプリを最小化する前の状態に完全に復元されます。

ただし、 と が両方ともdon't keep activitiesに設定さBackground process limitれているno background process場合、アプリを最小化すると、アクティビティの onDestroy() は呼び出されません (onStop() まで呼び出すだけです)。

動作の変更は、この時点でアプリを再度開くと、アプリケーションの onCreate() から開始され、短剣のコンポーネントが再作成されます。そのため、アプリを最小化する前の状態は復元されません。

しかし、OSは最後のアクティビティがBであり、Bのものであることをまだ覚えているようです

アプリを最小化するときに保存されたデータを持つsavedInstanceStateで呼び出され、Bのフラグメントも同様です。

そして、それはめちゃくちゃで、savedInstanceState からのデータがありますが、アプリ スコープ シングルトン オブジェクトは、savedInstanceState からのものと連携するデータを持たない新しいものです。

この場合、savedInstance がどこに保存されているか、また、アプリケーションが再作成されたように見えても、最後のアクティビティ (起動アクティビティではない) が再保存されるのはなぜですか?

0 投票する
0 に答える
367 参照

android - Android Espresso テストの保存とインスタンスの状態の復元

Espresso でアクティビティのインスタンス状態の保存と復元をテストしようとしています。

ライフサイクル全体をテストする方法は? Espresso で Android アクティビティの状態の保存と復元をテストする方法での提案は ? はすでに役に立っていますが、Parcelable のwriteToParcel / createFromParcelものをどのようにテストできますか? (InstanceState が保存および復元されるだけでなく、その間にシリアル化される場合を意味します。これにより、コードが機能しない場合に、この素​​晴らしい「不明な型コードのアンマーシャリング」例外が発生します)

Testing Support Library のテスト ルールでアクティビティを破棄して再起動すると、インスタンスの状態が保持されません。

私は少し実験しましgetInstrumentation().callActivityOnSaveInstanceState(oldActivity, stateBundle);たが、成功しませんでした。

何か案が?

0 投票する
0 に答える
66 参照

java - onSaveInstanceState() - パスは 1 つだけ

更新:実際のコードを含む

カスタムアダプターを埋めるためにArrayListを使用していますが、向きの変更などで正常に機能します。

「オンクリエイト」

"onSaveInstanceState"

そして私はそれをうまく取り出すことができます

しかし..複数の変数を渡す必要があり、それが壊れます。最後に挿入されたものだけが取得できるようです。

例1

「オンクリエイト」

"onSaveInstanceState"

ここで「myArrayList」は満たされていますが、「myNameString」はnullです


元。2

「オンクリエイト」

"onSaveInstanceState"

ここで「myNameString」は入力されていますが、「myArrayList」は null です


元のコード: