Activity之间的跳转:
1、 显示意图跳转:直接指定目标activity的包名和类名,效率高
2、 隐式意图跳转:通过activity在清单文件中定义的intent-filter的action和data,利用这两个action和data来创建意图对象(就是通过指定action和data),效率低
//补充:
一个activity如果需要隐式跳转,那么必须在清单文件中添加以下子节点intent-filter
<activityandroid:name="com.liuwei.secondactivity.SecondActivity">
<intent-filter>
<actionandroid:name="com.test.sa"/>
<dataandroid:scheme="test"android:mimeType="text/username"/>
<categoryandroid:name="android.intent.category.DEFAULT"></category>
</intent-filter>
</activity>
a). 在利用隐式跳转创建intent意图对象并设置相关项时必须和清单文件中设置的 intent-filter意图过滤器设置的项一一匹配(必须一一匹配)
b). 在intent-filter中指定的data可以作为activity之间数据的传递(非常有用)
c). 设置intent时如果不去匹配category,系统自动匹配默认的category(也就是说如果activity的category配置的为default,则系统会自动添加默认的category)
显示和隐式意图跳转的应用场景:
1、 显示意图:启动同一个应用中的activity
2、 隐式意图:启动不同应用中的activity
3、 在启动效率上,隐式远远低于显示
4、 如果android系统中有多个activity应用和你意图设置的action匹配,那么在系统启动activity时,会弹出一个对话框,里面包含所有匹配的activity
Service
Service的启动和activity的启动方法是一样的,也分显示和隐式,显示的话没有必要在清单文件中配置intent-filter,隐式必须在清单文件中配置intent-filter
Service的生命周期 ---
onCreate/onStartCommand/onDestroy 简单就这三个方法
@Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
}
@Override
public int onStartCommand(Intentintent, intflags,intstartId) {
// TODO Auto-generated method stub
return super.onStartCommand(intent,flags, startId);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
}
Service的开启方式
startService:
l 该方法启动的服务所在的进程属于服务进程
l Activity一旦启动服务,服务就跟activity一点关系也没有
bindService:
l 该方法启动的服务所在进程不属于服务进程
l Activity与服务建立连接,activity一旦死亡,服务也死亡
服务的混合调用(就是先bind服务然后start服务)
l 先开始,在绑定,先解绑,在停止
BroastcastReceiver
Application
Application和Activity,Service一样,是android框架的一个系统组件