stellar 中文文档 下载 App

用户服务 UserService:在你的代码跑进服务进程时用

特权命令能做的事有限,真正强大的玩法是:把自己写的代码(Binder 服务)放进 Stellar 的服务进程里,以特权身份运行。这就是用户服务机制,接口形态与 Shizuku 的 UserService 一脉相承。

绑定流程

val args = UserServiceArgs.Builder(MyUserService::class.java)
    .processNameSuffix("myservice")              // 进程名后缀,默认 "userservice"
    .versionCode(BuildConfig.VERSION_CODE.toLong())
    .tag("my-tag")                               // 可选标签
    .serviceMode(ServiceMode.DAEMON)             // 服务模式
    .build()

StellarUserService.bindUserService(args, object : StellarUserService.ServiceCallback {
    override fun onServiceConnected(service: IBinder) { /* 拿到 Binder,开始调用 */ }
    override fun onServiceDisconnected() { /* 服务断开 */ }
    override fun onServiceStartFailed(errorCode: Int, message: String) { /* 可选实现 */ }
})

UserServiceArgs 参数表

参数类型默认值说明
className必填—服务类完整类名
processNameSuffixStringuserservice进程名后缀
debugBooleanfalse调试模式
use32BitBooleanfalse32 位进程
versionCodeLong0服务版本号
tagString?null可选标签
serviceModeServiceModeONE_TIME运行模式

两种服务模式

配套接口

两个注意点

服务随主服务停止而终止(v1.0.10 起主服务停止会自动终止所有用户服务),驻留策略见双进程互守。