从Android电视推荐恢复活动

时间:2015-12-08 15:28:05

标签: android android-intent activity-lifecycle android-tv leanback

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

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

预期结果:

  • 我的活动是“MainActivity”(带有webview)
  • 我按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”(带有webview)
  • 我按HOME,所以我在Leanback发射器上推荐包括地雷。
  • 我按其中一个
  • 我的活动在extrat意图值中收到“onNewIntent”事件,我总是使用相同的媒体。

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

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

detailsIntent.setAction(movie.getId());

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

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

您有解决方案帮助我实现我想要的行为吗?

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

提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

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

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

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