我按照本教程构建了QuickSettings磁贴: https://codelabs.developers.google.com/codelabs/android-n-quick-settings/#0
到目前为止一切都很好,但是现在我仍然坚持下去:
我如何检测(在“活动”中)当前是否已添加图块?
我的第一个尝试是将其存储在文件中(使用onTileAdded
和onTileRemoved
),但是可能会不同步(如果使用外部存储,则可能是“数据清除”或用户编辑)
有没有一种安全的方法可以获取此信息?
答案 0 :(得分:1)
您可以在服务中使用静态变量:
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来获取所需的值。作为静态变量的替代方法,考虑在添加或删除TileService时使用LocalBroadcastManager从TileService发送广播。然后,您可以在“活动”中接收结果,并在其中使用它来更新全局变量。