android - 独立的透明活动在最近持有先前意图的人中显示
问题描述
我有一个处理 action.SEND 的 StandaloneActivity,它做了一些工作并完成。
<activity
android:name=".StandaloneActivity"
android:launchMode="singleInstance"
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>
它有透明的主题:
<style name="Theme.Transparent" parent="Theme.AppCompat">
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowNoTitle">true</item>
<item name="android:backgroundDimEnabled">false</item>
</style>
StandaloneActivity.kt
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
handleIntentExtras(intent)
}
override fun onNewIntent(intent: Intent) {
super.onNewIntent(intent)
handleIntentExtras(intent)
}
private fun handleIntentExtras(intent: Intent) {
// do some work and set extras to intent
//Calling setResult() as I start this activity from another activity with startActivityForResult() for another usecase.
setResult(Activity.RESULT_OK, intent)
finish()
}
预期的是,每当用户从另一个应用程序与我的应用程序共享某些内容时,用户不应离开当前应用程序,但 StandaloneActivity 应该能够完成工作并完成。StandaloneActivity(我的应用程序)不应保留在最近。
奇怪的是,上面的设置在 Java 版本的应用程序中按预期工作,但使用 Kotlin(从 Java 迁移到 Kotlin)StandaloneActivity(我的应用程序)在最近可见并且在打开它时,它正在处理以前的意图并完成。StandaloneActivity 仍然在最近。
解决方案
我试图用一个简单的演示应用程序重新创建相同的设置,在尝试了不同的启动模式和标志之后,我得到了解决方案。我必须从最近的活动中排除此活动,因此我在清单中的 StandaloneActivity 中添加了以下内容以及现有设置-
android:excludeFromRecents="true"
推荐阅读
- javascript - 在phonegap中使用加速度计检测运动
- vue.js - 在 vue-cli 中禁用动态路径图像加载的“包含所有图像”
- javascript - 将下拉列表中的选定值传递到 MSSQL 查询中
- android - 单击保存按钮后,键/对值检索卡在“正在运行的活动”上
- php - PHP 邮件功能:我必须停用防火墙吗?
- c# - 撇号编码问题
- r - 使用 Lubridate 包从军用时间转换为标准时间,指示 AM/PM
- javascript - 铬 css/js 支持
- c# - C# 与 MySQL。从 MySQL 表中获取有关单元格、行及其值的信息
- tensorflow - 在 tf_trt create_inference_graph 上中止(核心转储)