Nucleus is an Android library, which utilizes the Model-View-Presenter pattern to properly connect background tasks with visual parts of an application.
I have used this library in my project. I have two Activities consider Activity_A and Activity_B.
Issue Steps :
1) In Activity_A click on button webservice is called after validating data i have to
start Activity_B
2) User from Activity_B click on back button for going to Activity_A
3) Now the issue is in Activity_A without click button i got webservice data and user is automatic move on Activity_B....
In below example updateUi method in ScreenConfigActivity is called when i am coming back from MainActivity
So how can i prevent this issue.
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.TextView;
import com.my_mvp.R;
import com.my_mvp.base.BaseActivity;
import com.my_mvp.bean.SampleResponse;
import com.my_mvp.presenter.ScreenOrientationPresenter;
import nucleus5.factory.RequiresPresenter;
@RequiresPresenter(ScreenOrientationPresenter.class) public class ScreenConfigActivity
extends BaseActivity<ScreenOrientationPresenter> {
private static final String TAG = ScreenConfigActivity.class.getSimpleName();
private TextView tvDemo;
@Override protected void loadData(Bundle savedInstanceState) {
}
@Override protected void initViews() {
tvDemo = (TextView) findViewById(R.id.tvDemo);
tvDemo.setOnClickListener(v -> {
showProgress("Please wait...");
getPresenter().request(ScreenOrientationPresenter.NAME_1);
});
}
@Override protected int getContentView() {
return R.layout.activity_screen_config;
}
//TODO this method is called when i am coming back from MainActivity,
Expected result when i click on tvDemo then webservice is called and after that this method is called
public void updateUi(SampleResponse sampleResponse) {
dismissProgress();
Log.e(TAG, "updateUi: -------------------->" + sampleResponse.getItems().size());
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);
}
@Override protected void onPause() {
super.onPause();
}
}
import android.os.Bundle;
import android.util.Log;
import com.my_mvp.activity.ScreenConfigActivity;
import com.my_mvp.base.BasePresenter;
import com.my_mvp.network.RetrofitSingleton;
import icepick.State;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
/**
* Created by darshan.mistry on 3/24/2017.
*/
public class ScreenOrientationPresenter extends BasePresenter<ScreenConfigActivity> {
private static final int REQUEST_ITEMS = 1;
private static final String TAG = "";
@State public String name;
public static final String NAME_1 = "Chuck Norris";
public static final String NAME_2 = "Jackie Chan";
public static final String DEFAULT_NAME = NAME_1;
//TODO is called on every presenter’s creation.
@Override protected void onCreate(Bundle savedState) {
super.onCreate(savedState);
//.getItems(name.split("\\s+")[0], name.split("\\s+")[1])
if (savedState == null) {
restartableLatestCache(REQUEST_ITEMS, () -> {
return RetrofitSingleton.getInstance()
.configRetrofit()
.getItems(name.split("\\s+")[0], name.split("\\s+")[1])
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread());
}, (screenConfigActivity, sampleResponse) -> screenConfigActivity.updateUi(sampleResponse),
(screenConfigActivity, throwable) -> Log.e(TAG, "onCreate: "));
}
}
public void request(String name) {
this.name = name;
start(REQUEST_ITEMS);
}
Hello,
I have used this library in my project. I have two Activities consider Activity_A and Activity_B.
Issue Steps : 1) In Activity_A click on button webservice is called after validating data i have to start Activity_B 2) User from Activity_B click on back button for going to Activity_A 3) Now the issue is in Activity_A without click button i got webservice data and user is automatic move on Activity_B.... In below example updateUi method in ScreenConfigActivity is called when i am coming back from MainActivity
So how can i prevent this issue.