从 android 电视推荐中恢复 activity

Resume activity from a android tv recommendation

我在使用 Leanback 启动器管理 Android 电视上的推荐(通知)时遇到了一些问题。

我在这里使用 google 示例来实现我自己的示例:https://github.com/googlesamples/androidtv-Leanback

预期结果:

实际上,activity 的恢复没有重新加载 activity 工作正常,低于 PendingIntent 的创建:

private PendingIntent buildPendingIntent(Parcelable media, int id) {
        Intent detailsIntent = new Intent(this, MainActivity.class);
        detailsIntent.putExtra("media", media);
        detailsIntent.putExtra("id", id);

        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(MainActivity.class);
        stackBuilder.addNextIntent(detailsIntent);

        return stackBuilder.getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
}

当前结果:

此解决方案不起作用,因为 Google 在示例代码的注释中说:

// Ensure a unique PendingIntents, otherwise all recommendations end up with the same 
// PendingIntent

detailsIntent.setAction(movie.getId());

所以为了区分所有的推荐,我必须为 Action 设置一个 ID,否则,它将始终是发送到我的 activity 的最后一个 pendingintent。这是我目前的行为,我在 "onNewIntent" 中总是收到相同的 "media" 和 "id" 意图(最后一个),无论我点击哪个建议,我总是得到相同的意图。

但是,如果我使用 "id" 设置操作,则会重新创建 activity "MainActivity",因此恢复失败,我的 webview 的上下文被清除,我的 webview 被重新加载:( 但我在额外的意图值中得到了良好媒体的良好意图。

你有没有解决方案来帮助我实现我想要的行为?

为了简化我的问题,如何在不重新加载我的 activity 的情况下从具有良好 pendingintent 的推荐中恢复我的 Activity B?

预先感谢您的帮助。

我找到了解决办法。我不认为它是好的,但它适用于我的情况。

PendingIntent pIntent = PendingIntent.getActivity(this, id, detailsIntent, PendingIntent.FLAG_UPDATE_CURRENT);
return pIntent;

所以,如果我用 id 设置 "resquetCode",那么 Android 认为它是一个不同的 Activity 并恢复它而不重新创建一个新的。