Android 避免一个活动的多个实例

Android 避免一个活动的多个实例,android,android-intent,Android,Android Intent,我只希望我的活动只有一个实例。我读过关于意图标志和启动模式的文章,但它就是不起作用。 我尝试了SingleTask、SingleTop、各种意图标志等 我的舱单: <activity android:name="com.secret.domain.Player" android:label="@string/title_activity_player" android:launchMode="singleTask">

我只希望我的活动只有一个实例。我读过关于意图标志和启动模式的文章,但它就是不起作用。 我尝试了SingleTask、SingleTop、各种意图标志等
我的舱单:

    <activity
        android:name="com.secret.domain.Player"
        android:label="@string/title_activity_player" 
        android:launchMode="singleTask">
    </activity>
播放器活动显然播放音乐,如果我返回并创建一个新实例,仍然会播放音乐,两者都可以同时播放。顺便说一下,OnNewIntent()从未被调用过。
我想我做错了什么,但我不知道是什么


编辑:我知道这听起来和其他线程类似,但我读了它们,仍然不知道如何实现我想要的

那么你的腿上挨了一枪,他)

因为您的活动应该在单个任务中运行(因为
singleTask
属性)。每次启动时,系统都会为您的
活动创建一个新任务
,将以前的实例及其媒体播放器组件保留在内存中

这就是为什么您会听到来自多个已创建任务的多个音乐曲目


在这种情况下,您可以将
Activity
设置为
singleInstance
(在清单中使用适当的属性),然后如果您已经创建了包含
Activity
的任务,您只需要在
onNewIntent()
中处理intent,并且应该在没有任何
intent
标志的情况下启动它。但是您应该使此
活动
具有
ACTION\u MAIN
CATEGORY\u启动器
过滤器,如第二段所述。或者你应该在你的清单中把它设置成标准的,并在启动时使用
标记活动\u清除\u顶部
,考虑到你将失去所有的顶部活动。

还要检查这个答案:我认为玩家
活动
中没有问题。您在那里处理
onNewIntent()
吗?您使用什么组件来播放音乐?我使用MediaPlayer(在播放器中)播放音乐,onNewIntent()从未被调用过-因此我在那里不处理任何事情。不,也不起作用。顺便说一句,我不能按描述进行筛选,这不是一个独立的活动(而且它不能按预期工作),所以你想说,如果你在清单中将你的活动指定为
standard
,并以
FLAG\u activity\u CLEAR\u TOP
intent标志开始,你不会得到你想要的结果?是的,我仍然有多个实例。然后覆盖
ondestory()
,并关闭那里的音乐播放器。如果我正确理解文档,使用
标准
启动模式,启动新活动时
活动
也将从堆栈中删除,如所述。注意:如果指定活动的启动模式为“标准”,它也将从堆栈中移除,并在其位置启动一个新实例来处理传入的意图。这是因为当启动模式为“标准”时,总是为新的目的创建一个新实例。我尝试了几乎所有的启动模式/标志组合,但仍然不起作用。onDestroy()方法将停止播放-我不希望这样。编辑:为了让它更清楚,说玩家应该在后台玩(或多或少),如果我再次点击播放按钮(在库中),我不想要新的玩家,而是回到旧的。
Intent intent = new Intent(getActivity(),Player.class);
intent.putExtra(Intent.EXTRA_TEXT,s);
intent.setData( Uri.parse( s ));
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);