我只是希望我的活动只有一个实例。我读到了关于意图标志和启动模式,但它只是拒绝工作。 我尝试了SingleTask,SingleTop,各种意图标志等 我的清单:
<activity
android:name="com.secret.domain.Player"
android:label="@string/title_activity_player"
android:launchMode="singleTask">
</activity>
和启动代码:
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);
播放器活动显然会播放音乐,如果我回去创建一个新实例,它们仍可以同时播放。从来没有调用OnNewIntent()。 我认为我做错了什么,但我找不到。
编辑:我知道它听起来与其他线程类似,但是我读了它们仍然无法弄清楚如何实现我想要的。答案 0 :(得分:0)
所以你已经向你的腿射了一枪,他())))
因为您的活动应该在单个任务中运行(因为singleTask
属性)。每次启动时,系统都会为Activity
创建一个新任务,保留前一个实例,并将其作为内存中的媒体播放器组件。
这就是为什么你会听到几个创作任务中的几首音乐曲目。
在这种情况下,您可以将Activity
设为singleInstance
(使用清单中的相应属性),然后如果您已经创建了Activity
的任务,则只需将需要处理onNewIntent()
中的意图,您应该在没有任何Intent
标志的情况下启动它。但是,您应该使此Activity
具有ACTION_MAIN
和CATEGORY_LAUNCHER
过滤器,如第二段中所述here。或者你应该在你的清单中使用standard
并使用FLAG_ACTIVITY_CLEAR_TOP
启动它,考虑到你将失去所有顶级活动。