The best implementation of a viewpager is to recycle the viewpager items. And you can achieve it by using offScreenPageLimit.
However, answering your question, i have faced similar situation myself and there is no perfect solution yet to achieve such a scenario. But there are certain hacks that you can do.
One solution is to use
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
}
else {
}
}
This will execute only when fragment is visible to user.
But this function too has some pitfalls. In some edge cases, this doesn't execute as well which will lead to an empty fragment.
The hack that I do is to use "OnTabSelectedListener" if I am integrating viewpager with tablayout and if there is only Viewpager you can override "OnPageSelectedListener".
If you are using OnTabSelectedListener, you will get callbacks in "OnTabSelected()" method when a tab is selected. So when you get the callback, use a public function in the respective fragment to load the data(Api calls, setting adapter etc).
Hope this helps