私は基本的に理論的な問題を抱えています。2つのアクティビティAとBがあるとします。Intentを使用してAによってアクティビティBを呼び出していますが、Aを終了していないため、基本的にonPause()になります。いくつかのタスクの後、アクティビティBを終了したので、アクティビティAが前面に表示されます。私の質問は、finish()メソッドの後に何が起こるかということです。なぜなら、finish()メソッドの後にアクティビティBはスタックになりますが、アクセスできないと誰かから言われたからです。それが起こったとしても、それは記憶の無駄ではないのだろうかと私は混乱しています。または、私が間違っている場合は、適切な方法で私を案内してください。
1 に答える
1
私があなたの質問を100%理解しているかどうかはわかりません。しかし、試してみましょう...
ActivityAを開始すると、タスクのアクティビティスタックは次のようになります。
ActivityA (shown to user)
これで、ActivityAはActivityBを開始しますが、それ自体は終了しません。ActivityAが一時停止され、ActivityBがユーザーに表示されます。アクティビティスタックは次のようになります。
ActivityB (shown to user)
ActivityA (paused)
これで、ユーザーはActivityBでいくつかの操作を行ってから、ActivityBが自分自身を呼び出しfinish()
ます。これで、ActivityAがユーザーに表示されます。アクティビティスタックは次のようになります。
ActivityA (shown to user)
この時点で、ActivityBは終了し、システムから削除できます。AndroidはonDestroy()
ActivityBを呼び出し、ガベージコレクターは最終的にそれをヒープから削除します。ここには「記憶の無駄」はありません。
私があなたの質問を誤解した場合は、コメントしてください。それに応じて回答を修正します。
于 2012-10-10T22:27:41.957 に答える