158

重複の可能性:
Android アクティビティのライフ サイクル - onPause() と OnStop() の違い

私は疑問に思っていました -メソッドの違いは何ですか?onCreate()onStart()

onStart()冗長な方法だと思います。onCreate()常に呼び出されます (少なくとも私の最後の 2 つのプロジェクトでは)。

誰でも違いを説明できますか?

4

2 に答える 2

362

アクティビティのライフサイクルを見てみましょう ここに画像の説明を入力

どこ

***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 .....");
    }
}

これで混乱が解消されることを願っています。

そして詳細はこちらをご覧ください。

Lifecycle Methods in Detailsは、非常に良い例とデモ アプリケーションであり、ライフサイクルを理解するための非常に優れた記事です。

于 2011-07-25T05:21:31.477 に答える
29

onCreate()メソッドは、アクティビティが作成されたときに呼び出され、アクティビティのライフサイクル全体で1回だけ呼び出されます。ここでonStart()、アクティビティが停止したときに呼び出されます...つまり、バックグラウンドに移行し、そのonStop()メソッドがOSによって呼び出されます。onStart()アクティビティのライフサイクルで複数回呼び出される場合があります。詳細はこちら

于 2011-07-25T05:15:38.163 に答える