从Android电视推荐恢复活动

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

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

预期结果 :

  • 我正在进行我的活动"MainActivity"(带有webview)

  • 我按HOME,所以我在Leanback Launcher 上推荐包括地雷 .

  • 我按下其中一个

  • 恢复活动"MainActivity",无需使用新的额外内容重新创建它 .

实际上,没有重新加载活动的活动的简历工作正常,在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 Launcher 上推荐包括地雷 .

  • 我按下其中一个

  • 我的活动在extrat意图值中接收"onNewIntent"事件我总是使用相同的媒体 .

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

// 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)

2 years ago

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

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

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