在我的应用程序中,我使用媒体播放器服务。当我调用替换片段时,我想终止该服务。查看 Stackoverflow 和 Androids 网站上的答案,我还没有看到直接的答案。一旦调用了替换片段,就会调用片段生命周期的哪些部分。
我尝试了 onDestroy 和 onDetach 并且这些都没有被调用。放在哪里合适?
谢谢
在我的应用程序中,我使用媒体播放器服务。当我调用替换片段时,我想终止该服务。查看 Stackoverflow 和 Androids 网站上的答案,我还没有看到直接的答案。一旦调用了替换片段,就会调用片段生命周期的哪些部分。
我尝试了 onDestroy 和 onDetach 并且这些都没有被调用。放在哪里合适?
谢谢
我会把它onStop()
回调。
已停止
片段不可见。主机活动已停止,或者片段已从活动中删除但已添加到后台堆栈。已停止的片段仍然存在(系统保留所有状态和成员信息)。但是,它不再对用户可见,并且如果该活动被终止,它将被终止。
onDestroy()
并且onDetach()
回调可能不会被调用。
您可以看到Fragments 生命周期。这可能会有所帮助。
重要的是:
.replace
删除现有的片段并添加一个新的片段。
替换已添加到容器中的现有片段。这与为所有当前添加的片段调用 remove(Fragment) 基本相同,这些片段使用相同的 containerViewId 添加,然后使用此处给出的相同参数调用 add(int, Fragment, String)。
所以这意味着,onCreate
,onCreateView
,onActivityCreated
,onResume
现在你Fragment
是可见的。
我认为这些是与该问题相关的很好的主题:
调用 replace() 时片段的生命周期是什么?
用活动组内的另一个片段
替换片段片段替换现有片段
add()和replace()之间的差异与片段的生命周期