活动中的onNewIntent()是否等同于广播接收器中的onReceive(),并且可以替换它?如果不是,两者有什么区别?当活动暂停时,onNewIntent()还会启动吗?
发布于 2021-05-08 08:28:33
Q1.活动中的onNewIntent()是否等同于广播接收器中的onReceive(),并且可以替换它?
答:没有。
Q2。如果不是,两者有什么区别?
Ans:活动和广播是两个不同的组件,这两种方法是它们的回调,这两种方法意味着当您的广播被触发时,只有您可以在onReceive()中获得回调,但是当您使用singleTop启动模式的活动并且您的活动已经处于顶级任务(堆栈)时,如果您调用相同的活动,那么只会在onNewIntent()上得到一个回调。
Q3。当活动暂停时,onNewIntent()仍然启动吗?
Ans。对于在其包中将启动模式设置为"singleTop“的活动,或者如果客户端在调用startActivity(意图)时使用Intent#FLAG_ACTIVITY_SINGLE_TOP标志,则会调用此标记。在这两种情况下,当活动在活动堆栈顶部而不是正在启动的活动的新实例重新启动时,将在现有实例上调用onNewIntent(),其目的是重新启动它。
在恢复状态下,活动永远不会收到新的意图。您可以指望在此方法之后调用onResume(),尽管不一定是在此回调完成后立即调用。如果活动被恢复,它将被暂停,新的意图将被交付,然后是onResume()。如果活动不处于恢复状态,则可以立即传递新的意图,在活动再次活动时调用onResume()。
注意,getIntent()仍然返回原始意图。您可以使用setIntent(意图)将其更新为此新意图。
注意:如果您不知道启动模式和任务,请通过链接:https://developer.android.com/guide/components/activities/tasks-and-back-stack。
https://stackoverflow.com/questions/67445211
复制相似问题