Android Service的简单使用与生命周期说明

本文介绍了Android Service的启动方式,包括startService和BindService。startService与Activity生命周期独立,可以通过广播通信;BindService通过连接进行交互,需在onBind()返回IBinder。Service需在Manifest中注册。其生命周期包括onCreate(), onStartCommand(), onDestroy(),startService时onStartCommand()会多次调用。而使用bindService时,ServiceConnection涉及onCreate(), onBind(), onUnbind()和onDestroy(),这些方法在整个生命周期中只调用一次。" 111326851,10296496,MPLS与SDN网络对比:传统与现代的碰撞,"['MPLS', 'SDN', '网络服务', '路由协议', '网络运维']
摘要由CSDN通过智能技术生成

一、Service的启动分为startService和BindService

1.startService启动服务,Activity与Service是生命周期互不影响,如果通信可以使用广播

2.BindService启动服务,Activity与Service中间有一个连接,要使连接成功,onBind()必须返回一个IBinder对象。

3.创建一个Service,

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


public class ScorsService extends Service {

    /**
     * 在整个生命周期中只调用一次
     */
    @Override
    public void onCreate() {
        super.onCreate();
        Log.e("ScorsService", "onCreate");
    }

    /**
     * 每一次startService都会调用
     */
    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        Log.e("ScorsService", "onStartCommand");
        return super.onStartCommand(intent, flags, startId);
    }

    /**
     * bindService启动时调用,在整个生命周期中只调用一次
     * 要是Activity与Service连接成功,必须返回一个IBinder对象
     */
    @Override
    public IBinder onBind(Intent intent) {
        Log.e("ScorsService", "onBind");
        return new MyIBinder();
    }

    class MyIBinder extends Binder {
        public double scoreNums(double... scores) {
            int count = scores.length;
            if (count == 0) {
                return 0;
            }
            double sum = 0;
            for (double score : scores) {
                sum += score;
            }
            return sum/count;
        }
    }

    /**
     * 在整个生命周期中只调用一次
     */
    @Override
    public boolean onUnbind(Intent intent) {
        Log.e("ScorsService", "onUnbind");
        return super.onUnbind(intent);
    }

    /**
     * 在整个生命周期中只调用一次
     */
    @Over
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

yyxhzdm

你的鼓励是我创作的最大动力!!

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

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

打赏作者

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

抵扣说明:

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

余额充值