首页 > 其他 > 详细

Service生命周期

时间:2015-05-17 02:25:24      阅读:268      评论:0      收藏:0      [点我收藏+]

???????????????????????????????????????????????????????????? 初识Service

???????? 刚刚看到这个词你可能会问,这是什么东西?服务?那么Activity大家已经够为熟悉了吧,那么我打个比喻,Service就是不显示界面的Activity,也就是后台运行,可以在没有UI情况下进行运行。

  • service组件? service是没有显示UI的操作组件,例如,有时候你退出了音乐播放器,开始进入其他Activity界面例如去玩qq,音乐还是在后台响起,给Activity做必要的支持。开发时候用户只需要继承android.app.Service;就可以使用了
  • Service生命周期

service的生命周期,从它被创建开始,到它被销毁为止,可以有两条不同的路径:

A started service

  被开启的service通过其他组件调用?startService()被创建。

  这种service可以无限地运行下去,必须调用stopSelf()方法或者其他组件调用stopService()方法来停止它。

  当service被停止时,系统会销毁它。

?

A bound service

  被绑定的service是当其他组件(一个客户)调用bindService()来创建的。

  客户可以通过一个IBinder接口和service进行通信。

  客户可以通过?unbindService()方法来关闭这种连接。

  一个service可以同时和多个客户绑定,当多个客户都解除绑定之后,系统会销毁service。

?

我们先做一个实例实现:

Android Service的生命周期并不像Activity那么复杂,它只继承了onCreate(),onStart(),onDestroy()三个方法,当我们第一次启动Service时,先后调用了onCreate(),onStart()这两个方法,当停止Service时,则执行onDestroy()方法,这里需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会在执行onCreate()方法,而是直接执行onStart()方法,具体的可以看下面的实例。

这里说明onStart()已经被onStartCommande所代替

首先定义sevice:

public class MyService extends Service{
	
	public void onCreate() {
		System.out.println("****onCreate");
		
	}

	@Override
	public IBinder onBind(Intent arg0) {
		// TODO Auto-generated method stub
		return null;
	}
	public void onDestroy(){
		System.out.println("****onDestroy");
	}
	public int onStartCommand(Intent intent,int flag,int startid){
		System.out.println("****onStart  Intent"+intent+"  flag "+flag+"  startid:"+startid);
		return Service.START_CONTINUATION_MASK;
	}

}

?然后定义布局文件,应该启动关闭service

?

?

?

 <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="start"
        android:text="启动Service" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="stop"
        android:text="停止Service" />

?

主Activity

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	public void start(View v){
		MainActivity.this.startService(new Intent(MainActivity.this,MyService.class));
		
	}
    public void stop(View v){
    	MainActivity.this.stopService(new Intent(MainActivity.this,MyService.class));
		
	}

	
}

?

最后记得一点,一个service文件完成后记得在Androidmainfest进行注册,

在application节点下写上

<service 
            android:name="MyService" />

?如图:


bubuko.com,布布扣

点击启动按钮,控制台输出



bubuko.com,布布扣
??我们仔细看后面输出:


bubuko.com,布布扣
?然后我们调用手机设置里面的应用程序,查看运行的:
bubuko.com,布布扣

上图显示正在运行中的service

接下来我们点击关闭按钮:


bubuko.com,布布扣
?


?

?

Service生命周期

原文:http://429899791.iteye.com/blog/2211750

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!