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.