3

使用远程视图更新 LiveCard 时遇到问题。我正在使用此代码发布。我假设您可以使用 TimelineManager.getLiveCard(id) 获取 LiveCard,然后再次发布。我得到的结果是两张 LiveCard。两次发布卡片时,我都使用相同的 ID。
作为一种解决方法,我先取消发布,然后再发布,但这并不是一个平稳的过渡,因为它显示了两者之间的“Okay Glass”。

private void publishCard(Context context) {
    String cardId = "myCard";
    mLiveCard = tm.getLiveCard(cardId);
    mLiveCard.setNonSilent(true);
    RemoteViews rv = new RemoteViews(context.getPackageName(),
            R.layout.activity_vitals_glass);
    rv = updateViews(rv, pr);
    mLiveCard.setViews(rv);
    Intent intent = new Intent(context, MenuActivity.class);
    mLiveCard.setAction(PendingIntent.getActivity(context, 0, intent, 0));
    mLiveCard.publish();
}

updateViews() 方法只是在远程视图上设置文本视图。使用 RemoteViews 更新 LiveCard 的正确方法是什么?

4

1 回答 1

5

getLiveCard创建一个新的实时卡,因此您应该只在服务启动时调用它一次并缓存LiveCard您收到的实例。

您也可以同时缓存RemoteViews实例。要在卡片发布后更新卡片,您只需在调用任何 setter 后手动setViews再次LiveCard调用RemoteViews

于 2013-11-22T19:11:36.043 回答