Leanback Launcher を使用した Android TV でのおすすめ (通知) の管理に問題があります。
ここで Google サンプルを使用して独自の実装を行います: https://github.com/googlesamples/androidtv-Leanback
期待される結果 :
- 私は自分のアクティビティ「MainActivity」にいます(Webビューを使用)
- HOME を押すと、Leanback ランチャーが表示され、地雷が含まれていることが推奨されます。
- 私はそれらの1つを押します
- 新しいエクストラを使用して新しいインテントで再作成せずに、アクティビティ「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」にいます(Webビューを使用)
- HOME を押すと、Leanback ランチャーが表示され、地雷が含まれていることが推奨されます。
- 私はそれらの1つを押します
- 私のアクティビティは、extrat インテント値で「onNewIntent」イベントを受け取ります。私は常に同じメディアを持っています。
Google がサンプル コードのコメントで次のように述べているため、このソリューションは機能しません。
// Ensure a unique PendingIntents, otherwise all recommendations end up with the same
// PendingIntent
detailsIntent.setAction(movie.getId());
したがって、すべての推奨事項を区別するには、ID を使用してアクションを設定する必要があります。そうしないと、アクティビティに送信される最後のペンディング インテントになります。それが私の現在の動作です。「onNewIntent」では常に同じ「メディア」と「id」をインテント(最後のもの)で受け取ります。どの推奨事項をクリックしても、常に同じインテントを取得します。
しかし、「id」を使用してアクションを設定すると、アクティビティ「MainActivity」が再作成されるため、再開が失敗し、webview のコンテキストがクリアされ、webview がリロードされます :(追加のインテント値。
私が望む動作をするのに役立つ解決策はありますか?
質問を簡単にするために、アクティビティをリロードせずに、適切な保留中の意図を持つ推奨事項からアクティビティ B を再開するにはどうすればよいですか?
よろしくお願いいたします。