我想完成onCreate
方法中的活動。當我撥打finish()
時,onDestroy()
未立即被調用,代碼不斷流過finish()
。直到onCreate()
右大括號後纔會調用onDestroy()
。onCreate流程在完成後繼續()
根據developer.android.com/reference中的onCreate()
說明。
你可以從這個函數中調用finish(),在這種情況下 的onDestroy()會立即調用時沒有任何 活動週期(在onStart()的onResume()的onPause其餘的()等)執行。
我想問的原因是:我想從Bundle中檢查數據傳遞給onCreate()
。當然,我可以控制傳遞給onCreate
的內容,但我仍認爲應在交貨時檢查。
我的代碼包含類A
,它啓動活動B
。我相信最後兩個「if子句之外」標記不應該被調用,因爲if
語句中的finish
方法應該已經銷燬該活動。它與if子句無關,因爲第二個finish()
調用之後的標記行仍然被讀取。
我的代碼:
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):A類:goToBButton,onClick
11-26 15:53:40.636:INFO /標籤(699):A類:的onPause
11-26 15:53:40.865:INFO /標籤(699):B類:前一個線第一完成
11-26 15:53:40.896:INFO /標籤(699):B類:如果子句, 的外部之前第二完成
11-26 15:53:40.917:INFO /標籤(699):B類:if子句外, 完成後
11-26 15:53:41.035:INFO/tag(699):Class:onResume
11-26 15:53:41.165:INFO /標籤(699):B類:的onDestroy
「立即」是一個非常窮字的選擇在文檔... – Karu