I'm using a singleTop Activity to receive intents from a search-dialog via
onNewIntent().
What I noticed is that
onPause() is called before onNewIntent(), and then afterwards it callsonResume(). Visually:- search dialog initiated
- search intent fired to activity
onPause()onNewIntent()onResume()
The problem is that I have listeners registered in
onResume() that get removed in onPause(), but they are needed inside of the onNewIntent() call. Is there a standard way to make those listeners available?
onNewIntent() is meant as entry point for singleTop activities which already run somewhere else in the stack and therefor can't call onCreate(). From activities lifecycle point of view it's therefore needed to call onPause() before onNewIntent(). I suggest you rewrite your activity to not use these listeners inside of onNewIntent(). For example most of the time my onNewIntent() methods simply looks like this:
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
// getIntent() should always return the most recent
setIntent(intent);
}
With all setup logic happening in onResume() by utilizing getIntent().