[android]_[adb启动服务]

本文详细阐述如何通过ADB命令直接启动Android服务,无需手动开启应用。内容包括服务类的创建、Mainfest配置、ADB启动服务的命令以及如何防止服务重复启动的实现方法。

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

本文介绍如何直接在adb中启动服务(无需手动打开app)。

一、创建服务类

首先创建一个服务类并在启动的时候打印内容到Log方便观察,代码如下:

public class MyService extends Service {
    public MyService() {
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO: Return the communication channel to the service.
        throw new UnsupportedOperationException("Not yet implemented");
    }

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

二、Mainfest文件中

<service
    android:name=".MyService"
    android:enabled="true"
    android:exported="true">
</service>

三、ADB启动服务

输入如下命令启动服务:

adb shell am startservice 包名/服务类路径

如图:
这里写图片描述

表示启动成功,编译器也会打印信息如下:
这里写图片描述

四、防止重复启动服务

若第二次启动同一个服务则会调用再次调用onStartCommand,而onCreate只会在第一次启动的时候调用,所以为了避免重复执行相同的逻辑代码,可以把逻辑代码放在服务的onCreate中执行。
代码如下:

    @Override
    public void onCreate() {
        Log.i("============","start service");
        try {
            Thread.sleep(5000);
        }catch (Exception e)
        {

        }
        super.onCreate();
    }

Activity中启动服务:

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

手动启动app后打印出信息,然后再在adb中启动后没有重复输出信息,验证成立。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值