请告诉我使用startActivity(intent)
和setContentView(R.Layout.main)
之间的区别
哪种情况更优选,应该在哪些条件下使用?
我想当我们想要执行任何操作时,我们会使用startActivity(intent)
,只是为了移动到不同的页面,我们使用setContentView(R.Layout.main)
答案 0 :(得分:6)
如果您使用startActivity,则在新的Activity的onCreate中,您还将设置contentView()。因此,就时间而言,单独的setContentView更快,因为它不会启动新活动。因此,您的应用会更快地显示新屏幕......
另一方面,如果您调用startActivity,此活动将被放入堆栈,因此您可以通过按后退按钮返回。通过使用setContentView,您必须手动配置后退按钮以返回到先前的布局...
根据应用程序的类型,您必须确定哪种方法最适合您。 例如,对于chrome-to-phone源代码,显示google使用setContentView进行应用的完整设置阶段。它更快,他们在屏幕底部放回按钮返回。按物理后退按钮将停止活动。使用这种方法,他们在多个屏幕上使用一个活动来收集完成设置所需的所有信息。
设置完成后,Google会切换到startActivity方法,以执行不同的操作。在这里,应用程序使用不同的活动来完成用户可以执行的不同任务。每个活动都是一种独立的活动,后退按钮允许在它们之间快速切换。
希望这能指出你正确的方向
答案 1 :(得分:0)
startActivity(intent)顾名思义开始新活动。现在该活动使用setContentView(xml);
将xml布局设置为该活动。现在问题是第一个活动是如何开始的,因为我们没有为第一个活动调用startActivity(intent)。
答案就在你的清单文件中。首先调用清单中的Launcher活动,然后按照相应的jave文件setContentView(R.layout.main);
中的指定设置布局视图
答案 2 :(得分:0)
他们是非常不同的,但根据你的问题,我假设你试图用它们两个完成同样的事情,似乎有可能。然而你应该考虑的是setContentView(R.Layout.main
),如果你来回移动,将取消注册在该contentView中设置的先前的监听器,如果你有一些活跃的监听器,那么startActivity(intent)
会更受欢迎互动体验。还有其他更好的方法取决于你想要做什么。