我有一个具有 ViewPager 和 FragmentStatePagerAdapter 的活动。活动显示的每个页面都是一个片段。每个片段都有不同的内容。
我正在将 App Indexing 添加到此活动中。我读过很多东西,包括https://developers.google.com/app-indexing/android/publish#add-app-indexing-api-calls。这个链接说:
关于片段:您以与上面示例中的活动相同的方式构建片段。但是因为片段可能在一个活动中执行多次,或者可能有多个片段,所以您应该注意只调用一次 API。以下是一些指导方针:
- 如果活动调用 API,则不要从活动中的任何片段再次调用 API。
- 如果活动不调用 API,而您希望片段调用它,那么请确保只有一个片段调用 API,并且只调用一次。
这个谷歌开发者页面说活动应该只调用一次 API。如果只调用一次,我只能索引一页内容。我希望能够在每次 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 调用,违反(正如我解释的那样)谷歌文档。即使我确实实现了这一点,我也不相信它实际上正确地索引了我的内容。我上面描述的代码会起作用吗?在这种情况下,您能否建议一种更好的索引方式。还是我只是对 App Indexing 所做的事情感到非常困惑?