亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

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

問題描述

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

每分鐘刷新一次

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

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

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

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()
        );
    }

}

推薦答案

最短時(shí)間為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);

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

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

網(wǎng)友整理

注冊時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

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

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定