package nucleus.example.ui.item; import android.content.SharedPreferences; import android.os.Bundle; import java.util.concurrent.TimeUnit; import javax.inject.Inject; import icepick.State; import nucleus.example.ui.base.BasePresenter; import nucleus.example.network.ServerAPI; import static rx.android.schedulers.AndroidSchedulers.mainThread; public class ItemPresenter extends BasePresenter<ItemFragment> { public static final int GET_ITEM_REQUEST = 1; @Inject ServerAPI api; @Inject SharedPreferences pref; @State int id; @State String name; @Override protected void onCreate(Bundle savedState) { super.onCreate(savedState); restartableLatestCache(GET_ITEM_REQUEST, () -> api.getItem(name.split("\\s+")[0], name.split("\\s+")[1], id) .map(it -> it.item) .delay(pref.getInt("delay", 0), TimeUnit.SECONDS) .observeOn(mainThread()), ItemFragment::onItem, ItemFragment::onNetworkError); } void requestItem(int id, String name) { this.id = id; this.name = name; start(GET_ITEM_REQUEST); } }