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

asp*_*n88 8 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();
            }
        });
    }
}
Run Code Online (Sandbox Code Playgroud)

Jai*_*dra 10

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

将内容设置为onResume()onStart()(被称为多次)是低效的,因为这setContentView()是一个繁重的操作.


小智 5

您不要在 onStart 或 onResume 中设置ContentView,因为它效率低下。设置布局是一项相当繁重的任务。您必须解析 XML、创建视图、测量、绘图等。这是您最多希望运行一次的任务。

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