android中Service组件总结

本文详细介绍了Android中的Service组件,包括Service的创建、配置、启动与停止,如何绑定本地Service并进行通信,以及如何实现跨进程调用Service。Service是后台运行的服务,不具备界面,通过 Binder 对象实现与 Activity 的通信。文中给出了具体的代码示例,展示了startService()和bindService()的使用,以及使用Messenger实现跨进程通信的方法。
摘要由CSDN通过智能技术生成

Service是android四大组件之一,它与Activity非常类似,最大的区别就是Activity在前台运行,主要作用于界面的交互,而Service是在后台运行的一个服务,它没有界面。

Service的创建步骤:

(1)定义一个继承Service的子类;

(2)在AndroidManifest.xml文件中配置该Service。

与activity类似,Service也有自己的生命周期方法,具体如下:

     abstract IBinder onBind(Intent intent):该方法是重写Service必须实现的一个方法,方法中返回一个Binder对象,我们可以通过该Binder对象与Service进行通信。

     void onCreate ():当Service第一次被创建成功后,将会回调该方法,主要做一些初始化操作。

     void onDestroy():当Service被关闭之前会调用改方法,主要做一些Service的清理与保存工作。

     void onStartCommand():每次客户端调用startService(Intent)后方法启动Service时,Service都会回调改方法进行相关操作。

    boolean onUnbind():当绑定改Service上的所有客户端全都断开连接时,将会调用改回回调方法。

下面举例子介绍一下Service组件的简单应用

1、Service的创建、配置、启动与停止

MyService类:这个类只是重写了一些方法,并打印一些log,为了清楚说明Service启动时的方法回调

<span style="font-family:FangSong_GB2312;font-size:18px;">import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

public class MyService extends Service{
	private String TAG = "MyService";
	
	//必须实现,返回IBinder对象,用于与Service组件进行通信,此处返回null,具体后面详细介绍
	@Override
	public IBinder onBind(Intent intent) {
		return null;
	}
	
	//Service被创建时回调的方法
	@Override
	public void onCreate(){
		Log.i(TAG, "创建Service调用onCreate()");
	}
	
	//Service被启动时回调的方法
	@Override
	public int onStartCommand(Intent intent, int flags, int startId){
		Log.i(TAG, "启动Service调用onStartCommand");
         /*  
         * 这里返回状态有三个值,分别是:  
         * 1、START_STICKY:当服务进程在运行时被杀死,系统将会把它置为started状态,但是不保存其传递的Intent对象,之后,系统会尝试重新创建服务;  
         * 2、START_NOT_STICKY:当服务进程在运行时被杀死,并且没有新的Intent对象传递过来的话,系统将会把它置为started状态,  
         *   但是系统不会重新创建服务,直到startService(Intent intent)方法再次被调用;  
         * 3、START_REDELIVER_INTENT:当服务进程在运行时被杀死,它将会在隔一段时间后自动创建,并且最后一个传递的Intent对象将会再次传递过来。  
         */ 
		return START_STICKY;
	}

	//Service销毁时回调的方法
	@Override
	public void onDestroy(){
		super.onDestroy();
		Log.i(TAG, "销毁Service调用onDestroy()");
	}
}</span>

定义了Service之后需要在AndroidManifest.xml文件中配置该Service,即在AndroidManifest.xml文件中application标签内增加如下的配置片段来配置service:

<span style="font-family:FangSong_GB2312;font-size:18px;"><!--  配置一个service组件 -->
        <service android:name=".MyService">
            <intent-filter>
                <!-- 为该组件的intent-filter配置action -->
                <action android:name="com.example.MY_SERVER&
  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值