web-dev-qa-db-ja.com

androidの「アクティビティを保持しない」ことの主な利点と欠点

誰かがそれに答えることができるなら、私が持っておきたいクエリ:Do not keep activitiesテスト中にチェックするオプションAndroid開発者からのモバイルアプリケーションオプション。

私はアプリケーションでそれを使用しましたが、AndroidでDo not keep activitiesをオンにすると、アプリケーションが不適切に動作し、クラッシュすることがわかりました。

私の質問はわずかでした:

1: How much this option will affect mobile applications?

2: What exactly does this do?

アプリのキラーのように聞こえますが、開発者オプションにはアクティビティを保持しない-destroy every activity as soon as the user leaves itと書かれたボックスがあります。

これにより、アプリにプラスまたはマイナスの機能が作成されますか?

つまり、アプリを開いたときに、アプリを終了するとすぐに実際にアプリが閉じられ、タスクマネージャーで手動で強制終了することはありませんか?もしそうなら、これはRAM使用率を低く保つのに良いことではないでしょうか?

Do not keep activitiesを保持しながら使用することの利点と欠点は何ですか?.

このオプションはモバイルアプリケーションにどの程度影響しますか?

それらが適切に記述されている場合、このオプションは影響しません。

これは正確に何をしますか?

このオプションを有効にしている場合、メソッド onSaveInstanceState でアクティビティに保持されている変数のみが、別のアクティビティに移動したとき、またはアプリがバックグラウンドに移動したときに保存されます。他のすべての変数はすぐに削除されます。このオプションがオフの場合、これらの変数が保持される可能性があります

つまり、アプリを開いたときに、アプリを終了するとすぐに実際にアプリが閉じられ、タスクマネージャーで手動で強制終了することはありませんか?

いいえ、保持されていない変数がすべて削除されることを意味します。例では、ホームボタンを押します。

これにより、アプリにプラスまたはマイナスの機能が作成されますか?

いいえ、アプリケーションを適切に開発するのに役立ちます。予期しない状況を予測するのに役立ちます。

11
Adam Radomski

アクティビティを保持しないは、純粋に開発者向けオプションであり、次のことを確認するのに役立ちます。

  1. バックグラウンドになる前に、アクティビティの状態を保存しました。

2.取り扱うメモリ不足の状況を適切に(INその場合THE活性であろうことが破壊)。̶

編集:このオプションは、低メモリ状況をエミュレートしません。デバイスのメモリが少なくなると、システムはFinish()を呼び出してアクティビティにドロップを要求するか、コメントにあるようにプロセスを完全に強制終了します。

このオプションを有効にして開発するのはまだ良いことです。 onSaveInstanceState()およびonRestoreInstanceState()メソッドを適切にコーディングする必要があります。これにより、プロセスが強制終了された場合でも、ユーザーがこのアクティビティに戻ると、onSaveInstanceState(Bundle)メソッドに保存されたsavedInstanceStateでonCreate()が呼び出されます。

3
Siddharth N

[〜#〜] advantage [〜#〜]

開発者は、アプリケーションの異常な動作を確認し、low memory - framework kills the application

[〜#〜]短所[〜#〜]

ユーザーが知らないうちにこのオプションを有効にしている場合、デバイスの動作が遅くなり、デバイス上のユーザーナビゲーション全体ですべてのアクティビティが再作成されます。これにより、ユーザーの作業が妨げられます

xda developer forum でこのオプションの使用法について非常に良い回答があります。

1
Kushal

上記の回答に加えて、最初の外観からは見えません短所テストできますアクティビティのみこのオプションで問題を破壊/レクリエーションしますが、メモリ不足またはその他のシステム状態によるアプリケーションの再作成。アクティビティメモリから独立しているためです。

クラスが依存しているシングルトンがあると想像してください。システムがアプリを終了した後、自分で復元を実装していない場合に備えて、シングルトンもクリアされ、開始状態で復元されます。したがって、onSaveInstanceStateonRestoreInstanceStateが正しく実装されている場合、アクティビティのビューステートとフィールドは復元されますが、特定の画面であっても、復元後の正しいアプリの動作を保証するものではありません。それは考慮されるべきです

そのため、このような完全なケースをテストするには、アプリケーションを手動で停止する必要がありますが、タスクマネージャーからアプリケーションを削除しないでください。最も簡単な方法-赤い正方形のボタンをAndroid studioで停止します。アプリをもう一度開きます。

詳細

0
Beloo