日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了Wear OS瓷磚是如何每秒自我更新的?的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我已經做了一個瓷磚,應該可以顯示當前的心率。磁貼從共享的偏好中獲取心率,它工作得很好,但我需要像每一秒一樣刷新它。目前我只能使用.setFreshnessIntervalMillis(1000*60)

每分鐘刷新一次

文檔說我可以使用此命令從應用程序中的任何位置更新我的磁貼…

TileService.getUpdater(context)
       .requestUpdate(HeartRateTileService.class);

但這沒有任何作用。我在幾個地方嘗試了它,比如在我的MainActivity中的onItemSelected中,在BroadCastReceiver中和在前臺服務中。這是背景問題還是什么?我也試過

HeartRateTileService.getUpdater(this/getApplicationContext())
       .requestUpdate(HeartRateTileService.class);

這是我的磁貼…

public class HeartRateTileService extends TileService {
    private static final String RESOURCES_VERSION = "1";

    private String currentHeartrate = "0";
    private PrefManager prefManager;

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        int i = super.onStartCommand(intent, flags, startId);

        Log.d("HeartRate", "onStartCommand " + prefManager.getHeartrate());

        return i;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        prefManager = new PrefManager(this);
        Log.d("HeartRate", "onCreate " + prefManager.getHeartrate());
    }

    @NonNull
    @Override
    protected ListenableFuture<TileBuilders.Tile> onTileRequest(
            @NonNull RequestBuilders.TileRequest requestParams
    ) {
        Log.d("HeartRate", "onTileRequest " + prefManager.getHeartrate());
        return Futures.immediateFuture(new TileBuilders.Tile.Builder()
                .setResourcesVersion(RESOURCES_VERSION)
                .setFreshnessIntervalMillis(1000*60)
                .setTimeline(new TimelineBuilders.Timeline.Builder()
                        .addTimelineEntry(new TimelineBuilders.TimelineEntry.Builder()
                                .setLayout(new LayoutElementBuilders.Layout.Builder()
                                        .setRoot(
                                                layoutHeartRate()
                                        ).build()
                                ).build()
                        ).build()
                ).build()
        );
    }

    private LayoutElementBuilders.LayoutElement layoutPlay() {
        return new LayoutElementBuilders.Box.Builder()
                .setWidth(wrap())
                .setHeight(expand())
                .setVerticalAlignment(LayoutElementBuilders.VERTICAL_ALIGN_CENTER)
                .addContent(new LayoutElementBuilders.Row.Builder()
                        .addContent(
                                IconButton.buildIconButton(
                                        this,
                                        "ic_play",
                                        R.color.colorAccent,
                                        "start measuring heart rate",
                                        new ModifiersBuilders.Clickable.Builder()
                                                .setOnClick(new ActionBuilders.LaunchAction.Builder()
                                                        .setAndroidActivity(new ActionBuilders.AndroidActivity.Builder()
                                                                .setClassName(MainActivity.class.getName())
                                                                .setPackageName(this.getPackageName())
                                                                .build()
                                                        ).build()
                                                )
                                                .build()
                                )
                        ).build()
                )
                .build();
    }

    private LayoutElementBuilders.LayoutElement layoutHeartRate() {
        prefManager = new PrefManager(this);
        currentHeartrate = prefManager.getHeartrate();
        return new LayoutElementBuilders.Box.Builder()
                .setWidth(wrap())
                .setHeight(expand())
                .setVerticalAlignment(LayoutElementBuilders.VERTICAL_ALIGN_CENTER)
                .addContent(new LayoutElementBuilders.Row.Builder()
                        .addContent(
                                IconButton.buildIconButton(
                                        this,
                                        "",
                                        R.color.colorAccent,
                                        "start measuring heart rate",
                                        new ModifiersBuilders.Clickable.Builder()
                                                .setOnClick(new ActionBuilders.LaunchAction.Builder()
                                                        .setAndroidActivity(new ActionBuilders.AndroidActivity.Builder()
                                                                .setClassName(MainActivity.class.getName())
                                                                .setPackageName(this.getPackageName())
                                                                .build()
                                                        ).build()
                                                )
                                                .build()
                                )
                        ).build()
                )
                .addContent(new LayoutElementBuilders.Text.Builder()
                        .setText(prefManager.getHeartrate())
                        .build()
                )
                .build();
    }

    @NonNull
    @Override
    protected ListenableFuture<ResourceBuilders.Resources> onResourcesRequest(
            @NonNull RequestBuilders.ResourcesRequest requestParams
    ) {
        Log.d("HeartRate", "onResourcesRequest " + prefManager.getHeartrate());
        return Futures.immediateFuture(new ResourceBuilders.Resources.Builder()
                .setVersion(RESOURCES_VERSION)
                .addIdToImageMapping("ic_play", new ResourceBuilders.ImageResource.Builder()
                        .setAndroidResourceByResId(new ResourceBuilders.AndroidImageResourceByResId.Builder()
                                .setResourceId(R.drawable.ic_play)
                                .build()
                        ).build()
                )
                .build()
        );
    }

}

推薦答案

最短時間為20秒。

參見https://cs.android.com/androidx/platform/frameworks/support/+/androidx-main:wear/tiles/tiles-renderer/src/main/java/androidx/wear/tiles/manager/UpdateScheduler.java;l=31?q=20%20f:androidx%2Fwear%2Ftiles&start=51

    @VisibleForTesting static final long MIN_INTER_UPDATE_INTERVAL_MILLIS = SECONDS.toMillis(20);

這篇關于Wear OS瓷磚是如何每秒自我更新的?的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:OS Wear 更新 每秒 瓷磚 自我
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定