我有一个字典类型的应用程序,它通过意图过滤器接受从其他应用程序(例如浏览器)共享的任意文本。意图过滤器附加到一个特定活动(“查找”),该活动对共享文本进行一些后翻译并调用我的主要活动。查找活动悄悄关闭。
我正在使用带有 Android 4.0.4 的三星 Galaxy 上的系统浏览器对其进行测试,这是我注意到的一件有趣的事情。在第一次尝试时,它按预期工作。我点击“共享”,选择我的应用程序作为目标,调用查找活动,然后调用主活动。现在,如果我将任务切换回浏览器并在另一段文本上再次点击“共享”,则不会显示共享目标菜单。相反,我的主要活动恢复了。不是查找一个(这是合理的),而是主要的。onNewIntent()
既不传递给主要活动也不传递给查找活动。
onResume()
但是,被交付给 main。
但是,如果我点击“返回”而不是任务切换回浏览器——即明确关闭我的主要活动——在下一次尝试时,共享操作会再次显示目标菜单。
这种行为是怎么回事?共享功能是否记住上次共享操作的目标并尝试重用它?如果是这样,为什么它不记得共享的直接目标 - 我的查找活动?这有记录吗?
编辑:查找活动的清单如下所示:
<activity android:name=".Lookup"
android:label="@string/IDS_LOOKUPTITLE"
android:theme="@style/Theme.Transparent">
<intent-filter>
<action android:name="android.intent.action.SEND"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:mimeType="text/plain"/>
</intent-filter>
</activity>
当我从查找活动开始主要活动时,我试图重用现有的活动(如果有的话),所以标志是FLAG_ACTIVITY_REORDER_TO_FRONT|FLAG_ACTIVITY_SINGLE_TOP
.