为什么我们在onCreate()而不是onStart()或onResume()中设置内容视图?

时间:2015-11-28 16:04:55

标签: android

我已经创建了一个小程序,用于在onResume()方法上设置内容视图,而不是onCreate(),并且工作正常。

onResume()
{
        setContentView(R.layout.activity_main);
        editText1 = (EditText) findViewById(R.id.ed1);
        editText2 = (EditText) findViewById(R.id.ed2);
        Button button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(MainActivity.this, "Button Clicked", Toast.LENGTH_SHORT).show();
            }
        });
    }
}

3 个答案:

答案 0 :(得分:9)

当一个Activity的onCreate()被调用一次时,这就是大多数初始化应该去的地方:调用setContentView(int)来膨胀活动的UI,使用findViewById以编程方式与UI中的小部件交互,调用managedQuery(android.net.Uri , String[], String, String[], String)来检索正在显示的数据的游标等。

onResume()onStart()(多次调用多次)中设置内容效率不高,因为setContentView()是一项繁重的操作。

答案 1 :(得分:2)

你没有onStart或onResume中的setContentView,因为它效率低下。设置布局是一项非常重要的任务。你必须解析XML,创建视图,测量,绘图等。这是你想要运行一次的任务。

在Activity类的生命周期中,onCreate只会被调用一次。 onResume和onStart会被多次调用而不会破坏你的Activity。

答案 2 :(得分:1)

onResume您可以将其称为serval时间。 onCreate只是一次。尝试记录它们并跳到其他活动而不是回来。