1

我在正确的任务堆栈方面遇到了一些问题,并在深度链接实现期间将其置于最前面......我有一个Activity这样的声明:

<activity
    android:name=".activity.ArticleSingleActivity"
    android:label="@string/app_name"
    android:launchMode="standard">
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:scheme="http"
            android:host="site.com"
            android:pathPrefix="/article" />
    </intent-filter>
</activity>

它有launchMode="standard"并且没有父级,因为它Activity可以从应用程序中的许多地方启动:本机按钮或从WebView's. 即使在几乎每个实例的底部都放置了相关文章,因此它可能会自称(新实例)并且每篇文章都应该出现在新的“窗口”中

现在:当我的应用程序在后台运行并且在应用程序管理器中可见时,深层链接会ArticleSingleActivity在其他活动之上触发而没有问题。Intent 包含这些标志:

FLAG_ACTIVITY_BROUGHT_TO_FRONT
FLAG_ACTIVITY_NEW_TASK
FLAG_RECEIVER_FOREGROUND

当应用程序不在后台堆栈中(可以说被用户删除)ArticleSingleActivity时,启动时没有带上至前标志,一切都像往常一样开始,但我发现了一些小的不当行为。当我导航到另一个ArticleSingleActivity(例如从底部的相关或Activity从侧面菜单到任何其他)时,然后按主页并尝试打开相同的深层链接 url,然后应用程序就会被带到前面。它不显示链接的文章,但是Activity当应用程序“归巢”时它在顶部。断点也没有触发onCreateonActivityReenter甚至onNewIntent. 在我看来,系统“记得”它在后台堆栈中启动了Acticity匹配此 url,因此它只是将整个应用程序带到前面,但从Activity堆栈中不正确(没有像上面那样的 bring_to_front 标志)。

当我什至无法为Intent系统提供的自定义标志设置自定义标志或进行任何Intent签入时,我该怎么处理这种行为,因为堆栈上的onCreate任何活动都没有调用它?Activity

4

0 回答 0