【问题标题】:Two activities in task manager of same app同一应用程序的任务管理器中的两个活动
【发布时间】:2016-11-19 09:01:05
【问题描述】:

我的应用程序有两个活动,例如 MainActivitySecondActivity。主要活动声明为android:launchMode="singleInstance",其方向始终为portrait。第二个活动始终具有landscape 方向。

在某些设备中,一切正常,在任务管理器中只有一个我的应用程序实例,但在某些设备(如三星 S7)中,当我启动 SecondActivity 时,我的应用程序在任务中会有两个实例经理喜欢这张图片:

我的猜测是MainActivtylaunchMode 有问题,但我需要它是singleInstance。有什么建议吗?

编辑:

清单中的 MainActivity:

<activity
    android:name=".Activities.MainActivity"
    android:screenOrientation="portrait"
    android:launchMode="singleInstance"
    android:theme="@style/AppTheme"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

第二个:

<activity
    android:name=".Activities.SecondActivity"
    android:screenOrientation="landscape" />

启动代码:

Intent intent = new Intent(getActivity(),  
intent.putExtra("VideoUri", filmGet.getOutput().getData().getFilmTrailer());
startActivity(intent);

如果有帮助,我会从片段中启动 SecondActivity

【问题讨论】:

  • 尝试将启动模式更改为 singleTop 或 singleTask。
  • 你是如何开始你的新活动的?你能分享manifest.xmllaunching intent吗?
  • 我需要从另一个活动重新启动 MainActivity 所以 singleTop 不是我想要的。另外我在某处读到,对于 singleTask 活动,每次启动应用程序时,singleTask 活动都会出现在最前面,我不希望这样。
  • 我猜,你需要在你的两个活动上明确设置android:taskAffinity="com.whatever"。为两者设置相同的亲和力并检查它是否有效。
  • @mallaudin,感谢您的建议,但我测试了您的方法,不幸的是它没有奏效。

标签: android android-activity back-stack


【解决方案1】:

所以,在阅读了@sharan 评论和一些谷歌搜索之后,它让我阅读了一些谷歌文档。根据文档,android:launchMode=singleInstanceandroid:launchMode=singleTask 之间没有任何区别,而是一个。他们都让你的活动singleton,所以你永远不会有两个实例。它们之间的唯一区别是singleInstance 将阻止任务附加任何其他活动,而singleTask 没有此限制。关于他们的任何其他事情都是一样的。

因此,对于正在阅读这篇文章的任何人,我建议您不要使用singleInstance 启动模式,除非您确实需要它所具有的功能。因为如果您的应用中只有一个活动,那么singleInstancesingleTask 之间将没有区别。如果你有不止一项活动,那么我会推荐你​​所有的活动都属于一项任务。

简而言之,将singleInstance 更改为singleTask 即可。

【讨论】:

  • 补充一下,singleInstance 有利于单活动应用程序(这是当前的 go to 方法)。具有多个活动的应用程序应使用 singleTask。如果我错了,请纠正我。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
  • 2021-07-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多