12.Android学习之Service应用(二)

本文深入探讨Android中的Service,讲解了Bound Service的绑定过程与使用,以及IntentService如何解决耗时操作的问题。同时,文章还分析了stopService()与stopSelf()的区别以及不同类型Service的特性。
摘要由CSDN通过智能技术生成

目录

12.Service应用(二)

3.Bound Service

4.使用IntentService

5.难点解答

5-1.stopService()方法与stopSelf()方法的区别

5-2.不同类型Service之间的区别


12.Service应用(二)

3.Bound Service

当应用程序组件通过调用bindService()方法绑定到Service时,Service 处于绑定状态。多个组件可以同时绑定到一个Service上,当它们都解绑定时,Service被销毁。

如果Service仅用于本地应用程序并且不必跨进程工作,则开发人员可以编写自己的Binder 类来为客户端提供访问Service公共方法的方式。

注:这仅当客户端与Service位于同一个应用程序和进程时才有效,这也是最常见的情况。例如,音乐播放器需要将Activity 绑定到自己的Service来在后台播放音乐。

应用程序组件(客户端)能调用bindService()方法绑定到Service,该方法的语法格式如下:

bindService(Intent service, ServiceConnection conn, int flags)

参数说明:

◆service:通过Intent指定要启动的Service。

◆conn:一个 ServiceConnection 对象,该对象用于监听访问者与Service之间的连接情况。

◆flags:指定绑定时是否自动创建Service。该值设置为0时表示不自动创建,设置为BIND_AUTO_ CREATE时表示自动创建。

接下来Android系统调用Service 的onBind()方法,返回 IBinder 对象来与Service通信。

注:只有Activity、Service 和Content Provider能绑定到Service,BroadcastReceiver不能绑定到Service。

例:

 BinderService.java

package com.example.randonselectionnumber;
​
import android.app.Service;
import android.content.Intent;
import android.os.Binder;
import android.os.IBinder;
​
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
​
public class BinderService extends Service {
    public BinderService() {
    }
​
    //创建MyBinder内部类
    public class MyBinder extends Binder{
        public BinderService getService(){//创建获取Service的方法
            return Binder
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值