android有四大组件,分别是Activity,Service,BroadcastReceiver,ContentProvider.
Activity:相当于手机里面的一个展示界面.
每个Activity都是靠Intent来激活,并且都要在AndroidManifest.xml进行配置,在配置的时候可以设置Theme和Permission等.Activity的生命周期主要涉及到2个方法onCreate(Bundle savedInstanceState)和onDestrot()2个方法.初始化Activity的布局是在onCreate方法中实现,onDestroy方法主要是用于Activity销毁的时候释放资源以及其他事物.
Service:服务.
一个服务相当于一个线程或者进程,服务的启动方式有2种
(1)startService(Intent intent)/stopService(Intent intent)
(2) bindService(Service service, ServiceConnection conn,int flags)/bindService(ServiceConnection conn)
这2种方式的区别在于,使用bind的方式是与调用Service的Activity的生命周期紧密联系的,而使用start的方式是没有直接联系,也就是说如果采用bind的方式,当Activity生命周期结束时与这个Activity相关的Service也被结束,而start方式启动则相反.大家也可以看出Service也是靠Intent激活的.
BroadcastReceiver:广播接收器
有点类似于监听器模式,如果实现自己的广播接收器就继承这个类,实现里面的onReceiver方法,然后再AndroidManifest.xml进用<receiver>标签进行声明,再receiver标签中同时要申明你的广播的触发条件<intent-filter>.当再Activity中调用sendBroadcast(Intent intent)方法时进行触发,广播也是使用Intent进行激活.
ContentProvider:内容提供器
其实内容提供器就是一个进程交互数据的一套接口,实现它可以在不同的android程序之间共享数据,实现自己的内容提供器其实也很简单,继承ContentProvider实现一堆方法,这些方法名基本上就是数据库的增删改查实现,其中有一个关键的内UriMatcher,就是靠它来匹配URI进行定位.这是说明了内容提供器是靠URI激活的而不是Intent激活.
自定义ListView的ListItem的布局时,如果布局中有多选,单选,或者button时,必须设置布局属性android:descendantFocusability="blocksDescendants"并且把按钮的onfoucus属性设置为false,不然Listitem的onclick事件将失效,应为Listitem的onclick事件优先级低于button的onclick事件。