Android服务未显示在"服务列表"中



我有一个后台系统服务运行在我的android(私人应用程序(上,我可以使用正确创建和启动它

# am start-service  -n <my service>

它启动正常,我可以看到它在ps -A上运行,但service list没有显示它

我想使用am start -a <myservice>.doSomething来调用它的方法。我从来没有见过";客户端";

我可以在dumpsys tho:中看到服务运行

* ServiceRecord{ea1df4c u0 com.foo.bar.platformprovision/.PlatformProvisionService}
intent={cmp=com.foo.bar.platformprovision/.PlatformProvisionService}
packageName=com.foo.bar.platformprovision
processName=com.foo.bar.platformprovision
permission=android.permission.BIND_JOB_SERVICE
baseDir=/system/priv-app/bar_platformprovision_debug/platformprovision_debug.apk
dataDir=/data/user/0/com.foo.bar.platformprovision
app=ProcessRecord{3f8a209 19448:com.foo.bar.platformprovision/u0a113}
createTime=-21m13s353ms startingBgTimeout=--
lastActivity=-21m2s910ms restartTime=-21m2s910ms createdFromFg=true
startRequested=true delayedStop=false stopIfKilled=false callStart=true lastStartId=1

我的onBind代码如下:

@Override
public IBinder onBind(Intent intent) {
Log.i(TAG, "XXX: Service bond");
IBinder ib = (IBinder) new RemotePlatformServiceImp();
return ib;
}

两个问题:

  1. 为什么我看不到进程在service list中运行
  2. 如何正确地从adb调用方法(来自AIDL(

此命令adb shell service list仅显示系统服务。应用程序服务不会显示在那里。

如果你的服务在一个应用程序中,即使该应用程序是一个系统应用程序,也不会使其成为";系统服务";。这些服务是由SystemServer启动的,例如AudioService

adb shell dumpsys activity services将显示应用程序服务的信息。

至于第二个问题,据我所知,adb shell service call XXXX也只适用于系统服务。

最新更新