Когда я несколько раз нажимаю на кнопку прохождения активности, activity1
переходит в состояние паузы и через несколько секунд activity2
переходит на передний план / отображается для состояния пользователя.
Моя проблема в том, что когда мы переходим к действиям с несколькими нажатиями, пользователю требуется несколько секунд, чтобы дождаться, когда следующая активность перейдет в видимое состояние. это действительно плохая практика.
Вот журналы вызовов методов жизненного цикла acticity:
calling pause - Activity1
call: calling noti create - Activity2
call: calling noti start - Activity2
call: calling noti resume- Activity2
call: calling noti pause- Activity2
//2nd time calls of lifecycle methods
calling noti create- Activity2
call: calling noti start- Activity2
call: calling noti resume- Activity2
Вот нажатие кнопки навигации по активности:
@OnClick({R.id.card_notification})
public void onViewClicked(View view) {
switch (view.getId()) {
case R.id.card_notification:
startActivity(new Intent(context, NotificationsActivity.class).setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP));
break;
}
}
если я удаляю setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
, activity2
открывается несколько раз, когда несколько нажатий на кнопку нажимают.
Я пытался установить режим запуска в файле манифеста.
<activity android:launchMode=”singleTop” />
в этом случае также activity 2
требуется несколько миллионных секунд, чтобы прийти в видимое состояние.
Примечание: при однократном нажатии / нажатии все работает нормально.
Пожалуйста, помогите мне, что не так в этом сценарии.
Здесь 2-й код активности:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_noti_detail);
Log.e("call", "noti create");
context = this;
ButterKnife.bind(this);
setToolbar();
callApi("");
etSearchh.setOnEditorActionListener((v, actionId, event) ->
{
if (actionId == EditorInfo.IME_ACTION_SEARCH) {
isSearch = true;
//membersList = null;
callApi(etSearchh.getText().toString().trim());
CommonUtils.hideKeyboard(this);
return true;
}
return false;
});
etSearchh.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (s.toString().length() > 0) {
iv_clearSearch.setVisibility(View.VISIBLE);
} else {
iv_clearSearch.setVisibility(View.INVISIBLE);
}
}
@Override
public void afterTextChanged(Editable s) {
}
});
iv_clearSearch.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
iv_clearSearch.setVisibility(View.GONE);
etSearchh.setText("");
//membersList = null;
callApi("");
}
});
}
private void callApi(String searchBy) {
new NotificationController(apiCallBack, context, searchBy).callTokenAPI();
}
private void setToolbar() {
toolbarTitle.setText(MyApplication.getLabelModel().getLabels().getTT_NOTIFICATIONS());
etSearchh.setHint(MyApplication.getLabelModel().getLabels().getSEARCH_NOTIFICATION());
}
private void setRecycler(List<Notifications> notifications) {
mAdapter = new NotificationAdapter(notifications, context);
RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getApplicationContext());
recyclerView.setLayoutManager(mLayoutManager);
recyclerView.setItemAnimator(new DefaultItemAnimator());
recyclerView.setAdapter(mAdapter);
}
@OnClick(R.id.iv_back)
public void onViewClicked() {
onBackPressed();
}
@Override
protected void onStart() {
Log.e("Call", "calling noti start");
super.onStart();
}
@Override
protected void onResume() {
Log.e("Call", "calling noti resume");
super.onResume();
}
@Override
protected void onStop() {
Log.e("Call", "calling noti stop");
super.onStop();
}
@Override
protected void onPause() {
Log.e("Call", "calling noti pause");
super.onPause();
}