我正在为我的安卓设备开发某种媒体控件。场景如下:
当媒体数据(即艺术家/标题)发生变化时,会通知 Wear 应用中的 WearableListenerService。显示一个正在进行的通知,其中有一个全屏的第二页,其中包含一些控件。因为我不希望它显示在我的智能手机上,所以通知是内置在可穿戴应用程序中的。
第二页由显示意图中的一个活动组成:
Intent pageIntent = new Intent(this, ControlActivity.class);
pageIntent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(
getApplicationContext(),
0,
pageIntent,
0);
Notification controlPage = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.extend(
new Notification.WearableExtender()
.setCustomSizePreset(Notification.WearableExtender.SIZE_FULL_SCREEN)
.setDisplayIntent(pendingIntent))
.build();
Notification notification = new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.icon)
.setContentTitle(currentArtist)
.setContentText(currentTitle)
.setOngoing(true)
.extend(
new NotificationCompat.WearableExtender()
.addPage(controlPage)
.addAction(new NotificationCompat.Action(button, null, intent))
.setContentAction(0)
.setContentIcon(button)
.setBackground(BitmapFactory.decodeResource(getResources(), bg))
.setHintHideIcon(true)
)
.build();
NotificationManagerCompat.from(this).notify(NOTIFICATION_ID, notification);
现在通知会不时刷新以在第一个通知页面上显示新数据,这会在每次更新通知时强制重新创建第二个页面中的活动。这会导致一些丑陋的行为,用户可以看到第二页内的活动被重新创建。
有什么方法可以防止第二页中的活动被完全重新创建(onDestroy,onCreate)和/或只更新通知第一页上的数据,因为它应该是?是不是 PendingIntent 的创建在这里不起作用?
Manifest 条目如下所示:
<activity
android:name=".media.ControlActivity"
android:allowEmbedded="true"
android:exported="true"
android:launchMode="singleTop"
>
我已经尝试了所有标志组合,并且只更新了必要的部分,但没有任何变化。
非常感谢您的帮助。如果您需要更多信息,请告诉我。
编辑:主要问题似乎是通知第二页中的嵌入活动(用于自定义布局)总是在我调用通知时重新创建。重用,仅更新第一页上更改的值或不更新任何内容都没有效果。