私は疑問に思っていました-onCreate()
メソッドとonStart()
メソッドの違いは何ですか?
onStart()
は冗長な方法だと思います。 onCreate()
は常に呼び出されます(少なくとも私の最後の2つのプロジェクトでは)。
誰でも違いを説明できますか?
アクティビティのライフサイクルを見てみましょう
どこで
***onCreate()***
アクティビティが最初に作成されたときに呼び出されます。ビューの作成、リストへのデータのバインドなど、通常の静的設定をすべて行う必要があります。このメソッドは、アクティビティの以前にフリーズされた状態(存在する場合)を含むバンドルも提供します。常にonStart()が続きます。
***onStart()***
アクティビティがユーザーに見えるようになったときに呼び出されます。アクティビティがフォアグラウンドに来る場合はonResume()が、非表示になる場合はonStop()が続きます。
そして、これらのメソッドが呼び出されたときに見るためのシンプルなクラスを書くことができます
public class TestActivity extends Activity {
/** Called when the activity is first created. */
private final static String TAG = "TestActivity";
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Log.i(TAG, "On Create .....");
}
/* (non-Javadoc)
* @see Android.app.Activity#onDestroy()
*/
@Override
protected void onDestroy() {
super.onDestroy();
Log.i(TAG, "On Destroy .....");
}
/* (non-Javadoc)
* @see Android.app.Activity#onPause()
*/
@Override
protected void onPause() {
super.onPause();
Log.i(TAG, "On Pause .....");
}
/* (non-Javadoc)
* @see Android.app.Activity#onRestart()
*/
@Override
protected void onRestart() {
super.onRestart();
Log.i(TAG, "On Restart .....");
}
/* (non-Javadoc)
* @see Android.app.Activity#onResume()
*/
@Override
protected void onResume() {
super.onResume();
Log.i(TAG, "On Resume .....");
}
/* (non-Javadoc)
* @see Android.app.Activity#onStart()
*/
@Override
protected void onStart() {
super.onStart();
Log.i(TAG, "On Start .....");
}
/* (non-Javadoc)
* @see Android.app.Activity#onStop()
*/
@Override
protected void onStop() {
super.onStop();
Log.i(TAG, "On Stop .....");
}
}
これで混乱が解消されることを願っています。
詳細は こちら をご覧ください。
詳細なライフサイクルメソッド は、ライフサイクルを理解するための非常に優れた記事である非常に優れた例およびデモアプリケーションです。
onCreate()
メソッドは、アクティビティが作成されるときに呼び出され、アクティビティライフサイクル全体で1回だけ呼び出されます。ここで、アクティビティが停止するとonStart()
が呼び出されます...バックグラウンドになり、そのonStop()
メソッドがOSによって呼び出されます。 onStart()
は、アクティビティライフサイクルで複数回呼び出される場合があります。 詳細はこちら