ViewPager と FragmentStatePagerAdapter を持つアクティビティがあります。アクティビティによって表示される各ページは、1 つのフラグメントです。各フラグメントには異なるコンテンツがあります。
このアクティビティに App Indexing を追加します。https://developers.google.com/app-indexing/android/publish#add-app-indexing-api-callsを含む多くのものを読みました。このリンクは言う:
フラグメントについて: 上記の例のアクティビティと同じ方法でフラグメントを構造化します。ただし、アクティビティ内でフラグメントが何度も実行される場合や、複数のフラグメントが存在する場合があるため、API 呼び出しを 1 回だけ行うように注意する必要があります。以下にいくつかのガイドラインを示します。
- アクティビティが API を呼び出す場合は、アクティビティ内のどのフラグメントからも API を再度呼び出さないでください。
- アクティビティが API を呼び出さず、代わりにフラグメントで呼び出す場合は、1 つのフラグメントのみが API を 1 回だけ呼び出すようにします。
この Google 開発者ページには、アクティビティが API を 1 回だけ呼び出す必要があると記載されています。ただし、1 回しか呼び出されない場合は、1 ページのコンテンツしかインデックスに登録できません。ViewPager が新しいフラグメントを表示するたびに API を呼び出せるようにしたいと考えています。
これを行う方法はありますか?アクティビティ内で ViewPager をページングすることによって表示されるコンテンツにインデックスを付ける方法を説明するドキュメントが見つかりません。
このようなことができるようになりたいです。
1.In the activity onCreate call mClient = new
GoogleApiClient.Builder(this).addApi(AppIndex.API).build();
2. In activity onCreate call mClient.connect().
3. In the activity when a fragment becomes visible call AppIndex.AppIndexApi.start(mClient, myAction)
4. In the activity when a fragment becomes invisible call AppIndex.AppIndexApi.end(mClient, myAction)
5. In activity onDestroy call mClient.disconnect()
4. Repeat steps 3 and 4 as new views/fragments are paged in by the ViewPager
この設計では、単一のアクティビティで複数の AppIndexApi 呼び出しが発生し、(私が解釈すると) Google のドキュメントに違反します。これを実装したとしても、コンテンツが実際に適切にインデックス化されるという確信は持てません。上記で説明したようなコードは機能しますか? このシナリオでインデックスを作成するより良い方法を提案できますか? それとも、App Indexing が行っていることにひどく混乱しているだけですか?