Android四大组件之Service简介

1. Service简介

Service 意为:服务,是一种运行时用户不可见的活动机制。典型的场景:音乐后台播放。

注意:Service不同与子线程, Service是运行在主线程中的,因此不能进行耗时操作。

2. Service的创建

要想实现一个Service,我们需要继承系统的Service类新建一个自己的Service类,比如叫 MyService ,代码如下:

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;

import androidx.annotation.Nullable;

public class MyService extends Service {

    private static final String TAG = "tag";

    @Override
    public void onCreate() {
        super.onCreate();
        Log.d(TAG, "onCreate: ");
    }

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.d(TAG, "onStartCommand: ");
        return super.onStartCommand(intent, flags, startId);
    }

    @Nullable
    @Override
    public IBinder onBind(Intent intent) {
        Log.d(TAG, "onBind: ");
        return null;
    }

    @Override
    public boolean onUnbind(Intent intent) {
        Log.d(TAG, "onUnbind: ");
        return super.onUnbind(intent);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: ");
    }
}

通常需要重写其中的几个重要方法:onCreate、onBind、onStartCommand。

注意:Service作为四大组件之一,跟Activity一样要在Manifest文件中注册这个Service

3. Service的启动

Service有两种启动方式,绑定式 (bindService) 和非绑定式 (startService)。
与Activity一样,通过Intent启动。

3.1 startService方式

有了MyService类之后,接下来就可以启动这个Service了。启动方式跟我们打开一个Activity很类似,也用到了Intent。

通常,我们是在Activity或者Fragment中启动一个Service,去安排这个Service在后台做一些用户看不见的事情。

代码示例:

Intent intent = new Intent(this, MyService.class);
startService(intent);

特点:

  • 一旦服务开启就跟启动者没关系了,会无限期运行,即使启动者退出,service依然在后台运行。
  • 启动者不能调用service里面的方法。

3.2 bindService方式

除了直接启动一个Service,还可以通过绑定的方式开启一个Service。

这种方式稍微复杂一些,因为这时的Service是与调用者本身(Activity或Fragment)绑定在一起的,涉及到信息交互。

代码示例:

Intent intent = new Intent(this, MyService.class);
bindService(intent, conn, BIND_AUTO_CREATE);

特点:

  • 绑定服务后,服务就跟调用者的生命周期绑定在一起了,如果调用者销毁,服务也会跟着被销毁。
  • 调用者可以调用service里面的方法。

以上就是Service的基本介绍了,感谢支持~

  • 9
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

子林Android

感谢老板,老板大气!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值