我按照本教程构建了一个 QuickSettings Tile:https : //codelabs.developers.google.com/codelabs/android-n-quick-settings/#0到目前为止一切都很好,但现在我坚持这一点:我如何检测(在活动中)当前是否添加了磁贴?我的第一次尝试是将其存储在一个文件中(使用onTileAdded和onTileRemoved),但这可能会不同步(如果使用外部存储,则可能是“数据清除”或用户编辑)。有没有一种安全的方法可以获得这些信息?
1 回答
侃侃尔雅
TA贡献1801条经验 获得超16个赞
您可以在服务中使用静态变量:
public class MyTileService extends TileService {
public static boolean isAdded = false;
//...
@Override
public void onTileAdded() {
isAdded = true;
}
@Override
public void onTileRemoved() {
isAdded = false;
}
}
然后只需从您的活动中访问该变量。
不幸的是,由于 TileServices 已经覆盖,onBind()您不能使用 Binder 来按需获取值。作为静态变量的替代方案,请考虑使用 LocalBroadcastManager 在添加或删除 TileService 时从 TileService 发送广播。然后您可以在您的活动中接收结果并使用它来更新那里的全局变量。
添加回答
举报
0/150
提交
取消