4

this.finish()が正確に何をするのかについて少しぼんやりしています。具体的には、アクティビティに次のコード行を記述しました。

this.finish();
Globals gs = (Globals) getApplication();
gs.MainActivity.finish();

このコードは、現在のアクティビティを閉じ、アプリのコアアクティビティも閉じることを目的としています。そしてそれは素晴らしい働きをします。しかし、私は疑問に思いました...明らかに、最初の行が実行された後、現在のアクティビティは完全には終了していません。そして、this.finish()を呼び出してから、複雑な計算を開始するとどうなりますか?

私の質問は次のとおりです。this.finish()を呼び出すと、アクティビティはいつ削除されますか?

4

4 に答える 4

7

呼び出されたメソッドはすべて、メソッドが実際に開始finish()する前に実行されます。finish()したがって、質問に答えるために、呼び出しメソッドが終了した後、アクティビティはそのfinishメソッドを実行します。メソッドを続行したくない場合は、後にreturnステートメントを追加できますfinish

于 2013-01-10T19:56:45.960 に答える
5

this.finish()が正確に何をするかについて少しぼんやりしています

基本的に、呼び出しfinish()は、アクティビティを破棄する準備ができていることをAndroidOSに通知するだけです。次に、Androidは(準備ができているときはいつでも)アクティビティを呼び出しonPause()、アクティビティのライフサイクルを介してアクティビティを破棄します(onDestroy()の保証は呼び出されません)。一般に、を呼び出した後は、おそらくこれ以上実行しないでくださいfinish()Androidドキュメントによるとfinish()、アクティビティを閉じる準備ができたら電話する必要があります。

アクティビティはいつ削除されますか?

あなたのアクティビティは単にいくつかの破棄キューに追加されると思います。この間、OSが破棄するまで実行を継続できる場合があります。finish()呼び出されたメソッドの実行を確実に終了できると思います。

于 2013-01-10T19:56:48.257 に答える
1

クリス、私は専門家ではありませんが、ここで Android の finish() についての回答は、基本的に codeMagic が言ったことです。onStop() および onDestroy() に関する議論のため、リンクは貴重です

于 2013-01-10T19:58:19.707 に答える