onCreate
メソッドの中からアクティビティを終了します。 finish()
と呼び出すと、すぐにonDestroy()
が呼び出されず、コードはfinish()
を流れ続けます。 onDestroy()
は、onCreate()
の閉じ括弧の後に呼び出されます。完了後にフローを作成します。
onCreate()
(developer.android.com/reference)に記載されています。
あなたは)(その場合 onDestroy()で、すぐに アクティビティのライフサイクル(ONSTART()、onResume()、onPauseの残りのいずれかなしに呼び出され、この関数内からフィニッシュ()を呼び出すことができます、等)を実行する。
理由:私はonCreate()
に渡されたバンドルからのデータをチェックしたいと思います。もちろん、私はonCreate
に渡されるもののコントロールを持っていますが、私はまだそれが配信時点でチェックされるべきだと思います。
私のコードにはアクティビティB
を開始するクラスA
が含まれています。私は、if
ステートメントのfinish
メソッドがアクティビティを破壊しているはずであるため、最後の2つの "if clauseの外"タグを呼び出すべきではないと考えています。 2番目のfinish()
コールの後のタグ行も読み込まれるため、if節とは何の関係もありません。
マイコード:ここで
クラスA
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// goToBButton: when pressed sends message to class B.
Button goToBButton = (Button)this.findViewById(R.id.go_to__b_btn);
goToBButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick (View v) {
Log.i(TAG,"A Class: goToBButton, onClick");
Intent i = new Intent(A.this, B.class);
startActivityForResult(i,REQ_TO_B);
}
});
} // end onCreate
マイコードClassBの
public class B extends Activity{
private static final String TAG = "tag";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutb);
// set as true, should always print Tag: one line before first finish"
if (true) {
Log.i(TAG,"B Class: one line before 1st finish");
finish();
}
// shouldn't get here after first finish
Log.i(TAG,"B Class: outside of if clause, before second finish");
finish();
// shouldn't get here after second finish
Log.i(TAG,"B Class: outside of if clause, after finish");
} // end onCreate
@Override
public void onStart() {
super.onStart();
Log.i(TAG,"B Class: onStart");
}
@Override
public void onRestart() {
super.onRestart();
Log.i(TAG,"B Class: onRestart");
}
@Override
public void onResume() {
super.onResume();
Log.i(TAG,"B Class: onResume");
}
@Override
public void onPause() {
super.onPause();
Log.i(TAG,"B Class: onPause");
}
@Override
public void onStop() {
super.onStop();
Log.i(TAG,"B Class: onStop");
}
@Override
public void onDestroy() {
super.onDestroy();
Log.i(TAG,"B Class: onDestroy");
}
} // end B Class
は私のタグの結果は次のとおりです。
11-26 15時53 :40.456:INFO /タグ(699):クラス:goToBButton、onClick
11-26 15:53:40.636:INFO /タグ(699):クラス:
11-26 15 onPause:53:40.865:INFO /タグ(699):Bクラス:一行前第1仕上げ
11-26 15:53:40.896:/タグ情報(699):Bクラス:53:40.917:INFO /タグ句場合の外、 第
11-26 15を完了する前(699):Bクラス:if節の外側、 終了後
11-26 15:53:41.035:INFO /タグ(699):Aクラス:onResume
11-26 15:53:41.165:INFO /タグ(699):Bクラス:onDestroy
"即座に"ドキュメントの非常に悪い言葉の選択だった... – Karu