Issue
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 calls onResume()
. 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?
Solution
onNewIntent()
is meant as entry point for singleTop activities which already run somewhere else in the stack and therefore can't call onCreate()
. From activities lifecycle point of view it's therefore needed to call onPause()
before onNewIntent()
. I suggest you to 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()
.
Answered By - Rodja
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.