我在使用Leanback Launcher的Android TV上管理建议(通知)时遇到了一些麻烦。
我在这里使用谷歌示例来实现我自己的:https://github.com/googlesamples/androidtv-Leanback
预期结果:
实际上,没有重新加载活动的活动的简历工作正常,在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());
因此,要区分所有建议,我必须使用ID设置Action,否则,它将始终是发送到我的活动的最后一个pendingintent。这是我目前的行为,我在“onNewIntent”中总是在意图(最后一个)中获得相同的“媒体”和“id”,无论我点击哪个推荐,我总是得到相同的意图。
但是,如果我使用“id”设置操作,则会重新创建活动“MainActivity”,因此恢复失败,并且我的webview的上下文被清除,我的webview被重新加载:(但我得到了良好的意图额外意图值的好媒体。
您有解决方案帮助我实现我想要的行为吗?
为了简化我的问题,如何在没有重新加载活动的情况下从具有良好pendingintent的推荐中恢复活动B?
提前感谢您的帮助。
答案 0 :(得分:0)
我找到了解决方案。我不认为它是好的,但它适用于我的情况。
PendingIntent pIntent = PendingIntent.getActivity(this, id, detailsIntent, PendingIntent.FLAG_UPDATE_CURRENT);
return pIntent;
所以,如果我设置" resquetCode"使用id,因此Android认为它是一个不同的Activity并恢复它而不重新创建一个新的。