Android--Service①-->启动服务,停止服务,调用服务内部方法

本文介绍了Android中的Service,包括其作为无界面活动的角色,以及如何自定义Service。详细讲解了通过StartService和StopService启动和停止服务,以及利用bindService、ServiceConnection来调用服务内部方法的操作步骤和示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

Service顾名思义就是服务,如网易云音乐客户端播放歌曲,当你把打开其他应用,或者回到桌面,把应用放在后台时,歌曲还会一直播放,除非主动去关闭或者杀死应用进程。
曾经能否在后台自动运行一直是区分智能机和老人机的标准,用过老人机的同学回想一下,我们能不能在听歌的时候直接返回到桌面,歌曲还能播放,显然不能


提示:以下是本篇文章正文内容,下面案例可供参考

一、Service是什么?

1.继承了ContextWrapper

public abstract class Service extends ContextWrapper implements ComponentCallbacks2,
        ContentCaptureManager.ContentCaptureClient 

2.ContextWrapper继承自Context

public class ContextWrapper extends Context

3.总结:Service可以理解为没有界面的活动

4.自定义一个service类

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

public class MyFirstService extends Service {
   
   
    /*
    打Log时的TAG
     */
    private final static String TAG = "TAG";
    /*
    构造方法
     */
    public MyFirstService() {
   
   
    }
    /*
    自定义一个InnerBinder继承自Binder,有callServiceMethod()调用了sayBye方法
     */
    public class InnerBinder extends Binder {
   
   
        public void callServiceMethod() {
   
   
            sayBye();
        }
    }
    /*
    调用bindService时使用
     */
    @Override
    public IBinder onBind(Intent intent) {
   
   
        return new InnerBinder();
    }

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

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

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

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

    @Override
    public void onRebind(Intent intent) {
   
   
        Log.i(TAG, "onRebind");
        super.onRebind(intent);
    }

    private void sayBye() {
   
   
        Toast.makeText(this, "Bye bye !!!", Toast.LENGTH_SHORT).show();
    }
}

二. 启动,停止和方法调用

2.1 使用StartService启动服务,和使用StopService去停止服务

2.11 用两个控件来控制服务的启动和停止

xml代码如下:

    <TextView
        style=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值