【问题标题】:Shortcut from Recent Applications always launch latest activity of application. How to change that?最近应用程序的快捷方式总是启动应用程序的最新活动。如何改变它?
【发布时间】:2016-08-05 19:22:25
【问题描述】:

我想始终启动一个特定的活动,而不是在关闭应用程序期间处于活动状态的这个。我不可能在关闭之前切换到想要的活动,因为它可能已经死了。

我宁愿从最近的应用程序中删除整个程序的快捷方式,也不愿让用户被启动积分而不是启动启动画面弄糊涂。然而,这只是解决方法(但以防万一,我该怎么做?)

【问题讨论】:

    标签: android android-activity


    【解决方案1】:

    我反编译了一些应用程序并找到了他们的解决方案:

        <android:name="..."
            android:taskAffinity=":shortcut"
            android:excludeFromRecents="true"
            android:clearTaskOnLaunch="true"
            ...
    

    关于android:taskAffinity

    适用于应用程序中所有活动的亲和性名称,但那些使用自己的 taskAffinity 属性设置不同亲和性的活动除外。有关详细信息,请参阅该属性。

    默认情况下,应用程序中的所有活动共享相同的亲和性。该关联的名称与&lt;manifest&gt; 元素设置的包名称相同。

    【讨论】:

      【解决方案2】:

      如果你的意思是你想每次都通过相同的活动来启动你的应用程序,添加

      android:launchMode="singleTask" 
      

      到清单文件中的主要活动。这将强制您的应用程序将此活动放在活动堆栈的底部,以清除所有其他可能正在运行的活动。

      【讨论】:

      • 这是错误的。将这种特殊的启动模式添加到主 Activity 将无法实现 OP 的目标。它不会从堆栈中清除其他活动。我不知道这是如何被接受为正确答案的。
      【解决方案3】:

      实现此目的的一种方法是使用android:excludeFromRecents="true" 属性标记所有活动。这将确保您的任何活动都不会显示在“最近的应用程序”列表中。

      您还应该查看android:finishOnTaskLaunchandroid:stateNotNeeded 属性。

      【讨论】:

      • 如果您将主要的Activity 标记为excludeFromRecents="true",那么用户将不会在最近任务列表中找到该任务,并且如果他离开该任务将无法返回该任务(通过按 HOME 按钮或接听来电等)。不需要用这个属性标记所有活动,只需要主(根)Activity就够了。
      • 这个答案将阻止应用程序出现在最近的任务列表中。这可能不是 OP 想要的。不仅如此,如果应用程序打开了 2 个活动并且用户按下 HOME 按钮,然后返回到应用程序(不是通过从最近任务列表中选择它,而是通过再次按下 HOME 屏幕上的应用程序图标)然后它将返回到应用程序,顶部有第二个 Activity,这也不是 OP 想要的。
      【解决方案4】:

      解决这个问题的正确方法是添加

      android:noHistory="true"
      

      到所有活动的清单条目除了主(根)Activity

      当用户从最近的任务列表或通过按主页页面上的应用程序图标返回您的应用程序时,所有活动(除了主(根)Activity)将从任务中删除(实际上,当用户通过按 HOME 按钮、接听来电、从通知栏中选择另一个应用程序等方式离开应用程序时,它们会立即被删除。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        • 2012-06-14
        • 1970-01-01
        • 2020-12-12
        • 1970-01-01
        相关资源
        最近更新 更多