继承SuspendingTileService实现Wear OS Tile时遭遇抽象成员未实现错误
继承SuspendingTileService实现Wear OS Tile时遭遇抽象成员未实现错误
看起来你遇到了Horologist Tiles库版本更新带来的API适配问题,我来帮你捋清楚原因和解决办法~
错误原因
这个报错的核心是:你当前使用的Horologist Tiles库版本,相比之前能正常运行的项目做了更新——SuspendingTileService类新增了一个抽象的lifecycle属性,要求所有子类必须实现它,而你的MainTile类没有覆盖这个成员,所以编译器抛出了这个错误。
解决办法
我给你两种可行的解决思路,优先推荐第一种:
方案一:实现lifecycle抽象属性
直接在你的MainTile类中添加这个属性的实现即可,因为SuspendingTileService继承自Android的TileService,本身就持有Lifecycle实例,我们直接返回父类的Lifecycle就行:
override val lifecycle: Lifecycle get() = super.lifecycle
补全后的完整类代码如下:
package com.pyrosmart.[redacted].presentation import androidx.lifecycle.Lifecycle import androidx.wear.tiles.RequestBuilders import androidx.wear.tiles.ResourceBuilders import androidx.wear.tiles.TileBuilders.Tile import com.google.android.horologist.tiles.ExperimentalHorologistTilesApi import com.google.android.horologist.tiles.SuspendingTileService @OptIn(ExperimentalHorologistTilesApi::class) class MainTile : SuspendingTileService() { override val lifecycle: Lifecycle get() = super.lifecycle override suspend fun tileRequest(requestParams: RequestBuilders.TileRequest): Tile { return Tile.Builder() // 在这里构建你的Tile内容 .build() } override suspend fun resourcesRequest( requestParams: RequestBuilders.ResourcesRequest ): ResourceBuilders.Resources = ResourceBuilders.Resources.Builder().setVersion("1").build() }
方案二:降级Horologist库版本(可选)
如果你暂时不想适配新API,也可以把Horologist库的版本降级到和之前项目一致的版本。找到你Module级别的build.gradle文件,修改Horologist相关依赖的版本号:
// 替换成你之前项目使用的旧版本号,示例版本仅供参考 implementation "com.google.android.horologist:horologist-tiles:0.4.10"
不过还是更推荐方案一,适配最新API能避免后续更多版本兼容问题哦。
备注:内容来源于stack exchange,提问作者BCT
相关产品推荐
相关产品推荐

