1.service的概念:
1.service是运行在后台的一种代码
2.service既不是进程,也不是线程
3.service根据自身的需要,运行自己的进程,也可以运行其它应用的进程
Ø4.Android中的服务,它与Activity不同,它是不能与用户交互的,不能自己启动的,运行在后台的程序。
典型例子:我们手机上面的音乐播放器,退出播放界面后。还可以在后台运行
2.service的生命周期:
1.Oncreate()服务创建时调用。无论调用多少次startSercice()或者bindService()都只会调用一次该方法…
2.onStart()服务开始运行时调用该方法。
3.ondestroy()服务被终止时调用该方法。
4.onBind()该方法在调用者与服务绑定时候调用
5.onUnbind()解除绑定,只有采用Context.bindService()方法启动服务时才会回调该方法。
3.service的生命周期:
1.调用startService后,即使调用此方法的进程结束了,该service仍然存在直到stopservice被调用或者stopself(service自杀式关闭)。
2.当调用bindservice后,service与bindservice的进程就牢牢联系在一起了,也就是说,当调用bindservice的进程挂掉了,那么与之一起的service也就挂掉了。但是期间可以利用unbindservice结束service进程
3.当startservice与bindservice两种方法混合使用时,只有采用Context.bindService()方法启动服务时才会回调该方法。
4.进程的生命周期:
Ø1.Android系统将会尝试保留那些启动了的或者是绑定了服务的进程。
Ø2.如果该服务正在进程的onCreate(), onStart(),或者onDestroy()这些方法中执行时,那么主进程将会成为一个前台进程,以确保此代码不会被停止。
Ø3.如果服务已经开始,那么它的主进程会就重要性而言低于所有可见的进程但高于不可见的进程,由于只有少数几个进程是用户可见的,所以只要不是内存特别低,该服务不会停止。
Ø4.如果有多个客户端绑定了服务,只要客户端中的一个对于用户是可见的,即认为该服务可见。
Ø
Ø
Ø
5.如何使用service:
Ø1.第一种是通过调用Context.startService()启动,调用Context.stopService()结束,startService()可以传递参数给Service。
Ø2.种第二方式是通过调用Context.bindService()启动,调用Context.unbindservice()结束,还可以通过ServiceConnection访问Service。二者可以混合使用,比如可以先startService再bindservice。
Ø
6.Service的开发步骤:
7.启动service的两种方法:
1.startService()
代码如下:
public class HelloActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
......
Button button =(Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
Intent intent = new Intent(HelloActivity.this, SMSService.class);
startService(intent);
}});
}
}
2.bindservice()
代码如下:
public class HelloActivity extends Activity {
ServiceConnection conn = new ServiceConnection() {
public void onServiceConnected(ComponentName name, IBinder service) {
}
public void onServiceDisconnected(ComponentName name) {
}
};
public void onCreate(Bundle savedInstanceState) {
Button button =(Button) this.findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
public void onClick(View v) {
Intent intent = new Intent(HelloActivity.this, SMSService.class);
bindService(intent, conn, Context.BIND_AUTO_CREATE);
//unbindService(conn);//解除绑定
}});}}
8.service服务的运用主要分为以下几个步骤:
1.新建一个Android工程ServiceDemo
2.修改main.xml代码,增加二个按钮
3.新建一个Service,命名为MyService.java
4.新建ServiceDemo.java
5.配置AndroidManifest.xml
6.执行上述工程,用Logcat查看日志
7.按HOME键进入Settings(设置)àApplications(应用)àRunning Services(正在运行的服务)
9.android中的notification: