Wear OS 复杂功能未更新为最新值

问题描述 投票:0回答:1

我正在尝试从我在 Activity 中定义的共享 SharedPreferences 值更新我的并发症

 SharedPreferences.Editor editor = getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE).edit();
 editor.putString("temp", wristSkinTempC);
 editor.putString("tempF", wristSkinTempF);

 editor.apply();

在第一次出现并发症时,它会向我显示真实数据,但是当我点击它并测量新值时,它不会在并发症中显示,而是显示旧值。它确实会在几分钟后自行更新,有时甚至需要更多时间。但我希望一旦 getSharedPreferences 中有新值就立即更新它

这是我的复杂代码

 private fun createAppShortcutComplication(): ComplicationData {

        val prefs = getSharedPreferences("MY_PREFS_NAME", MODE_PRIVATE)
        val tempC = prefs.getString("temp", "") //"No name defined" is the default value.

        val intent = Intent(this, MainActivity::class.java).apply {
            component = ComponentName(this@CustomComplicationC, MainActivity::class.java)
        }
        val pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE)


        return ShortTextComplicationData.Builder(
            text = PlainComplicationText.Builder(text = tempC.toString()).build(),
            contentDescription = PlainComplicationText
                .Builder(text = "Short Text version of Number.").build(),
        ).setMonochromaticImage(
            MonochromaticImage.Builder(
                image = Icon.createWithResource(this, R.drawable.iconforbody),
            ).build(),
        )

            .setTapAction(pendingIntent)
            .build()


    }

这是我的 AndroidManifest

    `    <meta-data
            android:name="android.support.wearable.complications.SUPPORTED_TYPES"
            android:value="SHORT_TEXT" />
        <meta-data
            android:name="android.support.wearable.complications.UPDATE_PERIOD_SECONDS"
            android:value="30" />`

我已经尝试过上面的代码,它确实显示了该值,但在测量新值后不会立即更新

java android kotlin wear-os
1个回答
0
投票

一旦您的应用有新数据,您应该使用

ComplicationDataSourceUpdateRequester
:

请求更新所有复杂功能
        ComplicationDataSourceUpdateRequester
            .create(
                context = context,
                complicationDataSourceComponent = ComponentName(context, ComplicationClass::class.java)
            )
            .requestUpdateAll()
了解更多
© www.soinside.com 2019 - 2024. All rights reserved.