什么是基本意图?

q12*_*26y 3 android android-intent

来自:http : //developer.android.com/guide/topics/manifest/activity-element.html

android:relinquishTaskIdentity
Run Code Online (Sandbox Code Playgroud)

活动是否将其任务标识符放弃给任务堆栈中位于其上方的活动。根活动将此属性设置为“true”的任务将用任务中的下一个活动的基本意图替换基本意图。

这里的基本意图是什么?

vin*_*oyc 6

基本意图是最初启动您的应用程序的根意图。

最常见的可能是任何应用程序在响应应用程序图标上的触摸时所具有的那个。的LAUNCHER意图。

但它可以是自定义的,例如,当您响应自定义方案/网址时。但这是诀窍以及如何relinquishTaskIdentity有用:

假设您使用启动器图标启动您的应用程序。您的基本意图现在是默认意图。

现在,假设您的应用程序已完全终止(或者您在应用程序关闭之前使用硬件图标进行了支持)并且您使用自定义方案/url 打开您的应用程序,此时基本意图不是默认意图。它是从您单击的方案/网址生成的,也可能包含自定义数据。现在,如果您只是使用主页按钮关闭您的应用程序并重新打开它,您将继续您所在的位置。但是,如果您后退,后退,后退...使用硬件按钮直到您的应用程序关闭,则有一个技巧:从最近的应用程序/多任务视图重新打开它会重用基本意图来打开它,在这种特殊情况下它仍然是您的自定义方案/网址意图,这可能非常烦人。

为什么烦人?假设您的用户单击的方案/网址用于自动登录并且他成功了:您真的不想再次处理此网址/意图,因为您的用户备份直到其应用程序关闭并通过最近的应用程序/多任务视图重新打开它, 对?

使用relinquishTaskIdentity!这在很大程度上取决于您的设置以及您的应用程序如何针对活动与片段进行配置,但这里有一个示例:

在我提到的通过链接自动登录的特定情况下,您可以拥有一个Activity专用的并且仅响应方案/url。同样的活动应该与标记为 的活动不同LAUNCHER。并使用其relinquishTaskIdentity="true"上的属性将使基本意图成为随后通过该意图显示的任何活动。

那么在我们的案例中有什么好处呢?用户无法再使用自定义方案/网址生成的意图进入应用程序,除非他/她真的点击了您的应用程序支持的意图。