41

メニュー付きの基本アクティビティがあるとしましょう。メニュー項目Aをクリックすると、アクティビティAに移動します。メニューをもう一度開いてBに移動します。BIからAに戻り、次のように4番目に戻ります。しばらく。

したがって、スタックはA、B、A、B、A、B、...になります。そして、戻るボタンを押すと、期待どおりにスタックを逆方向に進みます。

ただし、この機能は必要ないので、マニフェストに追加しandroid:noHistory="true"ます。したがって、戻るボタンを押すと、スタックを通過するのではなく、アプリケーションを終了します。

これで、錯覚が現れます。たとえば、アクティビティAにいる場合、メニューを使用してアクティビティBに移動すると、Aに戻ることができないため、スタックはBになります。

しかし、を使用する場合noHistory="true"、A、B、A、B、A、Bの真のスタックは存在しますか?むしろ、メニューを使用してアクティビティを呼び出すたびに、そのアクティビティの新しいコピーがインスタンス化されますが、ユーザーには表示されませんか?これはリソースの問題を引き起こしますか?

または、の場合noHistory="false"、戻るボタンは単にstartAcitvity(intent)もう一度のようなものを呼び出しますか、それともインスタンス化された新しいコピーごとに実行されますか?

私はリソースの問題に関心があり、ユーザーのAndroidデバイスの速度を低下させていません。

4

3 に答える 3

49

に関するドキュメントからnoHistory

「true」の値は、アクティビティが履歴の痕跡を残さないことを意味します。タスクのアクティビティスタックに残らないため、ユーザーはタスクに戻ることができません。

あなたの質問について:

A、B、A、B、A、Bの真のスタックは存在しますか?

ドキュメントはいいえを示します。

私はリソースの問題に関心があり、ユーザーのAndroidデバイスの速度を低下させていません。

あなたは本当にこれについて心配する必要はありません。OSは、メモリが少なくなっているときにアクティビティのクリーンアップを処理する必要があります。アクティビティでのビットマップまたはロジックの使用が不十分だと、パフォーマンスが低下する可能性が高くなります。

于 2012-08-06T21:33:04.240 に答える
4

android:noHistory =“ true”は機能します:-

「アプリ」を開いたとします。

あなたは今ホームページにいます活動、

その後、別の(2番目の)アクティビティに移動します.2番目のアクティビティから、モバイルデバイスのホームボタンを押すか、他のアプリケーションを開きます。

ここでも、「アプリ」を開くと、アプリを離れたアクティビティ(つまり、2番目のアクティビティ)に移動するのではなく、アプリのホームページに移動します。

于 2018-04-18T07:50:32.480 に答える
0

アプリにフラグメントがほとんどなく、アプリのLauncher Activityを入力せずに、戻るボタンを押してホーム画面に戻るのは難しいようでした。アプリのランチャーアクティビティのマニフェストでandroid:noHistory = "true"を使用しましたが、問題は解決しました。

于 2018-06-19T05:54:26.260 に答える