一个Android应用通常由一个或多个基本组件组成,常用的一般有Activity、Service、BroadcastReceiver、ContentProvider等等。
⒈Activity和View
Activity时Android中负责与用户进行交互的组件。Activity只能通过setContentView(View)来显示指定组件。
View组件是所有UI控件、容器控件的基类,View组件就是Android应用中用户看到的部分。View组件需要放到容器组件中或使用Activity将它显示出来。如果需要通过某个Activity把指定的View显示出来,调用Activity的setContentView()方法即可。
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 //setContentView()方法可接收一个View作为参数 5 //创建一个线性布局管理器 6 LinearLayout layout = new LinearLayout(this); 7 //设置该Activity显示layout 8 setContentView(layout); 9 }
setContentView()方法也可接收一个布局管理资源的ID作为参数
1 @Override 2 protected void onCreate(Bundle savedInstanceState) { 3 super.onCreate(savedInstanceState); 4 //设置该Activity显示activity_main.xml文件定义的View 5 setContentView(R.layout.activity_main); 6 }
Activity为Android应用提供了可视化用户界面,如果Android应用需要多个用户界面,那么这个Android应用将会包含多个Activity,而多个Activity又组成了一个Activity栈,当前活动的Activity位于栈顶。
实际上Activity是Window的容器,Activity包含一个getWindow()方法,该方法返回该Activity所包含的窗口。
如果应用程序不调用Activity的setContentView()来设置该窗口的显示内容,那么该程序将显示一个空窗口。Activity包含了一个setTheme(int resid)方法来设置其窗口的风格。例如,我们希望窗口不显示ActionBar、以对话框的形式显示窗口等都可以通过该方法来实现。
⒉Service
Service与Activity的地位是并列的,它也代表一个单独的Android组件。Service与Activity的区别在于:Service通常位于后台运行,它一般不需要与用户交互,因此Service组件没有图形界面。
与Activity组件需要继承Activity基类相似,Service组件需要继承Service基类。一个Service组件被运行起来之后,它将拥有自己独立的生命周期,Service组件通常用于为其他组件提供后台服务或监控其他组件的运行状态。