如何检测是否添加了应用程序快速设置磁贴

时间:2018-10-22 19:15:23

标签: java android

我按照本教程构建了QuickSettings磁贴: https://codelabs.developers.google.com/codelabs/android-n-quick-settings/#0

到目前为止一切都很好,但是现在我仍然坚持下去:

我如何检测(在“活动”中)当前是否已添加图块?

我的第一个尝试是将其存储在文件中(使用onTileAddedonTileRemoved),但是可能会不同步(如果使用外部存储,则可能是“数据清除”或用户编辑)

有没有一种安全的方法可以获取此信息?

1 个答案:

答案 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发送广播。然后,您可以在“活动”中接收结果,并在其中使用它来更新全局变量。