0

我在使用 Leanback Launcher 管理 Android TV 上的推荐(通知)时遇到了一些麻烦。

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

预期结果 :

  • 我正在进行我的活动“MainActivity”(带有网络视图)
  • 我按 HOME,所以我在 Leanback 启动器上,推荐包括地雷。
  • 我按下其中一个
  • 恢复活动“MainActivity”,而无需使用带有新附加功能的新 Intent 重新创建它。

实际上,没有重新加载活动的活动恢复工作正常,在 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);
}

当前结果:

  • 我正在进行我的活动“MainActivity”(带有网络视图)
  • 我按 HOME,所以我在 Leanback 启动器上,推荐包括地雷。
  • 我按下其中一个
  • 我的活动通过提取意图值接收“onNewIntent”事件,我始终使用相同的媒体。

这个解决方案不起作用,因为谷歌在示例代码的评论中说:

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

detailsIntent.setAction(movie.getId());

因此,为了区分所有建议,我必须使用 ID 设置 Action,否则,它将始终是发送到我的活动的最后一个挂起的意图。这是我目前的行为,我在“onNewIntent”中收到的意图(最后一个)总是相同的“媒体”和“id”,无论我点击哪个推荐,我总是得到相同的意图。

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

你有一个解决方案来帮助我拥有我想要的行为吗?

为了简化我的问题,如何在不重新加载我的活动的情况下从具有良好挂起意图的推荐中恢复我的活动 B?

预先感谢您的帮助。

4

1 回答 1

0

我找到了解决方案。我不认为这是一个好的,但它适用于我的情况。

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

所以,如果我用 id 设置“resquetCode”,那么 Android 会认为这是一个不同的 Activity 并在不重新创建新的情况下恢复它。

于 2015-12-08T16:41:40.950 回答