我正在尝试从我在 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" />`
我已经尝试过上面的代码,它确实显示了该值,但在测量新值后不会立即更新
ComplicationDataSourceUpdateRequester
: 请求更新所有复杂功能
ComplicationDataSourceUpdateRequester
.create(
context = context,
complicationDataSourceComponent = ComponentName(context, ComplicationClass::class.java)
)
.requestUpdateAll()